2

自分の通知をより頻繁に受け取るために、最小限に 設定したgoogle-api-services-driveバージョンを使用して、大きなファイルを Google のドライブに挿入しようとしています。次のコードは、ファイルを挿入するために使用されます。v2-rev93-1.16.0-rcsetChunkSize()ProgressListener

File body = new File();
body.setTitle(filetobeuploaded.getName());
body.setMimeType("application/zip");
body.setFileSize(filetobeuploaded.length());

InputStreamContent mediaContent =
        new InputStreamContent("application/zip",
        new BufferedInputStream(new FileInputStream(filetobeuploaded)));
mediaContent.setLength(filetobeuploaded.length());

Insert insert = drive.files().insert(body, mediaContent);
MediaHttpUploader uploader = insert.getMediaHttpUploader();
uploader.setChunkSize(MediaHttpUploader.MINIMUM_CHUNK_SIZE);
uploader.setProgressListener(new CustomProgressListener(filetobeuploaded));
insert.execute();

「しばらく」(時には 200 MB 時には 300 MB )の後、私は得ましたIOException

Exception in thread "main" java.io.IOException: insufficient data written
at sun.net.www.protocol.http.HttpURLConnection$StreamingOutputStream.close(HttpURLConnection.java:3213)
at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:81)
at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:960)
at com.google.api.client.googleapis.media.MediaHttpUploader.executeCurrentRequest(MediaHttpUploader.java:482)
at com.google.api.client.googleapis.media.MediaHttpUploader.upload(MediaHttpUploader.java:390)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:418)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:343)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:460)

このコードを機能させる方法はありますか?

4

4 に答える 4

0

私にとってこれは、「あなたは POST を実行してコンテンツの長さを指定しましたが、アップロードしたストリームはそのコンテンツの長さに一致するほど長くありませんでした」(以前は基本的に「疲れ果てた」、いわばすでに)。

于 2015-08-19T23:21:40.183 に答える
0

この問題は、ドライブの再開可能なメディアのアップロードにのみ発生します。この返信を確認してください.. https://stackoverflow.com/a/30796105/4576135

于 2015-06-12T06:04:49.033 に答える
0

時間の制約があるため、フロントエンドから機能させることはできません。チャンクの処理中にバックエンド/タスクキューもシャットダウンされる可能性があるため、唯一の信頼できる方法 (ただし面倒) は、再開可能なアップロードを使用してバックエンドから実行することです。

于 2013-08-25T00:17:15.397 に答える