2017-03-29 20 views
0

質問は簡単です。 GoogleドライブのREST APIを統合した後、最終的に私のGoogleドライブからファイルをダウンロードすることができました.SOOこの例に従っています https://developers.google.com/drive/v3/web/manage-downloads すべてうまくいきました。コンソールではファイルがダウンロードされたという情報が得られます。そこでここに質問があります:それはどこに、どのフォルダに行くのですか?ファイルが保存される場所はどこですか? iOS Documentsフォルダにファイルを保存する必要がある場合、どのように必要な保存パスを設定しますか?iOSのGoogleドライブREST

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); 
    } 
}]; 

私はiOSの10のために開発し、上記と私はinfrmation読んで:いずれかを使用する必要がありNSURLConnectionはiOSの9とOS X 10.11で廃止されているので、このクラスはGTMSessionFetcher.Iに取って代わられています。注コードはgoogle.Butからコードを使用しています。誰かが私の両方の問題(GoogleとGTMSessionFetcher)を解決するのに役立つだろうかと感謝しています。

+0

? NSURLSession? AFNetworking? – nshuman

+0

私は元のコードフォームのGoogleを使用しています、私は質問を更新しました、おそらくそれが助けになる! –

+0

あなたのケースに対する私の回答を更新しました。それを確認してください。 – nshuman

答えて

0

UPD:GoogleのAPIクライアントのために

GTLRDataObject libには、ファイルの生のバイトが含まれているdata性質を持っています。標準のiOSメソッドを使用してファイルを安全にするだけで十分です。

ファイルのMIME typeの文字列であるcontentTypeプロパティもあります。あなたはおそらく、保存されたパスdataと一緒にこの情報をどこかに保存したいと思っています。それはあなたがどのファイル(画像/歌/テキスト)の種類を正しく表示し、デコード/オープン/実際の情報を提示するためのデータ。

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); 
    } 
}]; 

GTLRDataObject参照のためにCocoaDocsを参照してください。


ジェネリック版:あなたがNSURLSessionを使用した場合のiOS SDK

を使用して、それはあなたがどこでもあなたが必要とする一時的な場所からファイルを移動するために使用する方法を委任ています。あなたはこのREST APIを要求しない方法

のObj-C

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

スウィフト

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

ありがとう!私はあなたの答えを本当に感謝しますが、アイデアは割り当ての行に "MyFile"のinstaedを書くことが何もありません。また、私がダウンロードしようとしているのは、mimeTypeを持っていない* .db3ファイルです(少なくともgoogle doesn * .db3ファイルに必要なmimeTypeを提供していません)何かを提案できますか? –

関連する問題