3

私はそのユーザーから小さなアプリを作成しています。そのユーザーは、自分の MS オフィス ファイルを、Android デバイスから登録済みのメール ID G_Drive アカウントにアップロードできます。そのファイルを PDF 形式にエクスポートします。

そのために、リンクの下のヘルプフォームを利用しました:

https://developers.google.com/drive/v2/reference/files/insert#examples

https://developers.google.com/drive/manage-downloads#downloading_google_documents

私はアプリケーションを作成し、小さなサイズ (< 1MB) のファイルでは問題なく動作しましたが、大きなサイズを g_Drive に送信すると、以下のエラーが発生します。

java.io.exception Unexpected End of Stream
java.net.SocketTimeoutException: Read timed out

再開可能なアップロードを試みましたが、挿入メソッドにはこれを設定するパラメーターがありません。アップロードタイプを再開可能に設定している場合

service.files().insert(body, mediaContent).set("upload type", "resumable");

また

Insert insertService = service.files().insert(body, mediaContent).setConvert(true);
insertService.getMediaHttpUploader().setDirectUploadEnabled(false);         insertService.getMediaHttpUploader().setChunkSize(MediaHttpUploader.DEFAULT_CHUNK_SIZE);
file = insertService.execute();

同じエラーを生成するよりも。

ダウンロードでも同じケース.....

いくつかの解決策を送ってください...これについて...

4

1 に答える 1

1

5MB を超えるファイルには基本アップロードを使用しないでください。

アップロードを開始する前に、メディア コンテンツのコンテンツの長さを設定する必要があります。そうしないと、Google エンドポイントがアップロードの完了を認識できず、ソケットがタイムアウトになるまで待機する可能性があります。

InputStreamContent mediaContent = new InputStreamContent("image/jpeg", new   BufferedInputStream(
    new FileInputStream(UPLOAD_FILE)));
mediaContent.setLength(UPLOAD_FILE.length());

Insert insert = drive.files().insert(fileMetadata, mediaContent);
MediaHttpUploader uploader = insert.getMediaHttpUploader();
uploader.setDirectUploadEnabled(false);
uploader.setProgressListener(new FileUploadProgressListener());
insert.execute();

[1]には、完全な Android ベースの再開可能なアップロード サンプルがあります。

于 2013-04-13T00:06:42.997 に答える