2013-08-13 2 views
0

// Я пытаюсь загрузить файл с Google Drive. Я могу перечислить файл в 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]; 
+0

вы хотите сохранить в каталоге документов? – iPatel

+0

ya правильный в каталоге документов ... – NextStep

+0

проверить 'имя_файла 'правильно или нет по nslog – iPatel

ответ

1

// Я попробовал это .. это работает для меня ...

NSString *downloadURL=[[self.driveFiles objectAtIndex:indexPath.row] downloadUrl]; 
GTMHTTPFetcher *fetcher = 

[self.driveService.fetcherService fetcherWithURLString:downloadURL]; 

filename=[[NSString alloc]init]; 

[fetcher beginFetchWithCompletionHandler:^(NSData *data, NSError *error) 

{ 
    GTLDriveFile *file = [driveFiles objectAtIndex:indexPath.row]; 

    NSLog(@"%@",file.fileSize); 
    NSLog(@"%@",file.title); 

    if(file.downloadUrl!= nil) 
     { 

      if (data!=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]; 

    NSLog(@"my path:%@",documentsDirectory); 

    } 
    } 
    else 
    { 
     NSLog(@"Error - %@", error.description); 
    } 
    }]; 
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); 
    } 
}]; 

Редактировать

Слишком вы можете обратиться к этой link

+0

[data writeToFile: documentsDirectory atomically: YES encoding: NSUTF8StringEncoding error: nil]; в ошибке получения данных Нет Видимый интерфейс для Nsdata объявляет селектор writeToFile – NextStep

+0

О, извините, это должно быть 'writeToFile: <# (NSString *) #> atomically: <#(BOOL)#>' вместо – iphonic

+0

тогда также ошибка идет ..... из данных .. – NextStep

Смежные вопросы