2017-03-29 2 views
0

Meine Frage ist ziemlich einfach. Nach der Integration von Google Drive REST API konnte ich endlich Dateien von meinem Google Drive.SO herunterladen. Ich habe dieses Beispiel gefolgt Alles funktioniert gut, und in der Konsole bekomme ich die Informationen, dass die Datei heruntergeladen wird. Also hier ist die Frage: Wohin geht es, in welchen Ordner? In welchem ​​Pfad wird die Datei gespeichert? Und wie lege ich den erforderlichen Speicherpfad fest, wenn ich eine Datei im iOS Documents-Ordner speichern muss?Google Drive REST in iOS

NSString *fileId = @"0BwwA4oUTeiV1UVNwOHItT0xfa2M"; 

GTLRQuery *query = [GTLRDriveQuery_FilesGet queryForMediaWithFileId:fileId]; 
[driveService executeQuery:query completionHandler:^(GTLRServiceTicket *ticket, 
                GTLRDataObject *file, 
                NSError *error) { 
    if (error == nil) { 
     NSLog(@"Downloaded %lu bytes", file.data.length); 
    } else { 
     NSLog(@"An error occurred: %@", error); 
    } 
}]; 

ich für iOS 10 eine Entwicklung und eine oben und als ich las das infrmation: Hinweis: Da NSURLConnection ab iOS veraltet 9 und OS X 10.11, hat diese Klasse von GTMSessionFetcher.I sollte entweder ersetzt worden verwenden Code von Google (oben veröffentlicht) oder GTMSessionFetcher.Ich verwende Code von google.But wird dankbar sein, ist jemand hilft mir mein Problem mit beiden (Google und GTMSessionFetcher) Varianten zu lösen.

+0

Welche Art und Weisen Sie das REST API beantragen? NSURLSitzung? AFNetworking? – nshuman

+0

Ich verwende Originalcode Formular Google, ich habe die Frage aktualisiert, vielleicht wird es helfen! –

+0

Ich habe meine Antwort für Ihren Fall aktualisiert, bitte überprüfen Sie es. – nshuman

Antwort

0

UPD: Für Google-API-Client lib

GTLRDataObject hat data Eigenschaft, die rohe Bytes der Datei enthält. Es ist genug, um Ihre Datei mit Standard-iOS-Methoden zu sichern.

Es gibt auch contentType Eigenschaft, die eine Zeichenfolge mit MIME type der Datei ist. Wahrscheinlich möchten Sie diese Informationen irgendwo zusammen mit dem Pfad zu gespeicherten data speichern, es wird Ihnen helfen, richtig zu zeigen, welche Art von Datei (Bild/Lied/Text) es ist, sowie verwenden Sie beim Dekodieren/Öffnen/Lesen gespeichert Daten, um aktuelle Informationen zu präsentieren.

GTLRQuery *query = [GTLRDriveQuery_FilesGet queryForMediaWithFileId:fileId]; 
[driveService executeQuery:query completionHandler:^(GTLRServiceTicket *ticket, 
               GTLRDataObject *file, 
               NSError *error) { 
    if (error == nil) { 
     NSLog(@"Downloaded %lu bytes", file.data.length); 

     // Here is where you take these bytes and save them as file to any location you want (typically your Documents folder) 
     NSURL *documentsDirectoryURL = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; 
     [file.data writeToURL:documentsDirectoryURL atomically:YES]; 

     // Now you can store the url/path of the saved file somewhere along with the MIME type string (maybe new class or structure describing the file in your app) 
     MyFile *file = [[MyFile alloc] initWithFilePath:[documentsDirectoryURL path] mimeType:contentType]; 
    } else { 
     NSLog(@"An error occurred: %@", error); 
    } 
}]; 

Siehe CocoaDocs für GTLRDataObject Referenz.


Generika-Version: mit iOS SDK

Wenn Sie NSURLSession verwenden, hat es Methode delegieren, die Sie Datei von temporären Speicherort verwenden zu bewegen überall Sie benötigen.

Obj-C

- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location { 
    // Use `location` to move your data to Documents directory or wherever else 
} 

Swift

func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didFinishDownloadingTo location: URL) { 
    // Use `location` to move your data to Documents directory or wherever else 
} 
+1

Danke! Ich schätze deine Antwort sehr, aber ich habe keine Idee, was ich in "MyFile" in die Zuweisungszeile schreiben soll. Außerdem versuche ich eine * .db3-Datei herunterzuladen, die keinen mimeType hat. (Zumindest google doesn 'MimeType für * .db3-Dateien nicht bereitstellen. Können Sie etwas vorschlagen? –

Verwandte Themen