0

// Google ドライブからファイルをダウンロードしようとしています。ファイルをそのサイズとともに nslog にリストできますが、ドキュメント ディレクトリに書き込むことはできません。現在、拡張子を付けてパスを保存しますが、元のファイルは保存しません。

GTLDriveFile *file;
NSString *downloadedString = file.downloadUrl; // file is GTLDriveFile
GTMHTTPFetcher *fetcher = [self.driveService.fetcherService  fetcherWithURLString:downloadedString];
filename=[[NSString alloc]init];


[fetcher beginFetchWithCompletionHandler:^(NSData *data, NSError *error)     
{
 GTLDriveFile *file = [driveFiles objectAtIndex:indexPath.row];

 filename = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

    NSLog(@"\n\n\n\n\n");    
    NSLog(@"This is File Size=====>%@",file.fileSize);

    NSLog(@"This is file Name===>%@",file.title);

    if(file.downloadUrl!= nil)
        {

       filename=file.title;    

   NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

  NSString *documentsDirectory = [paths objectAtIndex:0];

  documentsDirectory = [[paths objectAtIndex:0]stringByAppendingPathComponent:[NSString stringWithFormat:@"%@",filename]];
[data writeToFile:documentsDirectory atomically:YES encoding:NSUTF8StringEncoding error:nil];


    NSLog(@"my path:%@",documentsDirectory);
    }
    else
    {
    NSLog(@"Error - %@", error.description);
    }
}];
// ya i got it...
 NSString *downloadURL=[[self.driveFiles objectAtIndex:indexPath.row] downloadUrl];
 GTMHTTPFetcher *fetcher =

 [self.driveService.fetcherService fetcherWithURLString:downloadURL];
4

2 に答える 2

1

正しいコードは次のようになります。すべて大文字の私のコメントを参照してください。

GTLDriveFile *file;
NSString *downloadedString = file.downloadUrl; // file is GTLDriveFile
GTMHTTPFetcher *fetcher = [self.driveService.fetcherService  fetcherWithURLString:downloadedString];
filename=[[NSString alloc]init];


[fetcher beginFetchWithCompletionHandler:^(NSData *data, NSError *error)     
{
 GTLDriveFile *file = [driveFiles objectAtIndex:indexPath.row];

    //filename = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];  //THIS LINE IS WRONG

    NSLog(@"\n\n\n\n\n");    
    NSLog(@"This is File Size=====>%@",file.fileSize);

    NSLog(@"This is file Name===>%@",file.title);

    if(file.downloadUrl!= nil)
        {

       filename=file.title;  // THIS IS CORRECT  

   NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

  NSString *documentsDirectory = [paths objectAtIndex:0];

  documentsDirectory = [[paths objectAtIndex:0]stringByAppendingPathComponent:[NSString stringWithFormat:@"%@",filename]];

//USE DATA TO WRITE THE FILE NOT `documentsDirectory`
[data writeToFile:documentsDirectory atomically:YES];


    NSLog(@"my path:%@",documentsDirectory);
    }
    else
    {
    NSLog(@"Error - %@", error.description);
    }
}];

編集

あなたもこのリンクを参照することができます

于 2013-08-13T10:43:08.893 に答える