3

mp4 ファイルを Google ドライブにアップロードする際に問題があります。再開可能なアップロードを使用しています。チャンク サイズは最小サイズの多重度として設定されます (プログレス バーを機能させるためにアップロードするファイル サイズによって異なります)。小さなファイルのアップロードは、ほぼ常に機能しています。しかし、ファイルが約 50 MB の場合、アップロードは頻繁に失敗します。EOFExceptionアップロードの最初Unexpected end of streamか、アップロードの途中で例外 " "が発生しました。多くのテストの後、動作はランダムで、機能する場合と機能しない場合があります。Eclipse プラグインでダウンロードした最新の Google Drive API を使用しています。AccountPicker" " アクティビティでデフォルト認証を使用しています。Google検索で多くのヒントを見てきましたが、何も問題を解決していません. たとえば、「System.setProperty("http.keepAlive", "false")」を設定します。これは私のアップロード方法です:

try{
    final java.io.File fileContent = new java.io.File(path);
    // get MIME type from name:
    String mime = getMimeType(fileContent.getAbsolutePath());
    FileContent mediaContent = new FileContent(mime, fileContent);

    // File's meta-data.
    File body = new File();
    body.setTitle(fileContent.getName());
    body.setMimeType(mime);
    // set parent folder:
    body.setParents(Arrays.asList(new ParentReference().setId(parentId)));

    Files f = mService.files();
    Insert i = f.insert(body, mediaContent);
    // configure MediaUploader:
    MediaHttpUploader uploader = i.getMediaHttpUploader();
    uploader.setDirectUploadEnabled(false);
    uploader.setProgressListener(new FileUploadProgressListener());
    int chunkSize = getDataChunkSize(fileContent.length());
    uploader.setChunkSize(chunkSize);
    File file = i.execute();
    // upload was interrupted
    if (Thread.interrupted() == true) {
        // file upload was interrupted, currently no action here.
    }
    else if (file != null) {
        // upload finished with success.
    }
    else if (file == null) {
        // upload failed.
    }
}
catch (Exception e) {
    // upload failed:
}

EOFException「 」は、主に Google ドライブを長時間使用せずにアップロード リクエストを行った場合に発生することに気付きました。たとえば、フォルダの一覧表示を行ってアップロードを行った直後の場合、「EOFException」は生成されません。クレデンシャル オブジェクトとドライブ サービス オブジェクトを、アクティビティ タイム ライフごとに 1 回だけ作成しています。多分いくつかのリフレッシュが必要ですか?これを手伝っていただけますか?前もって感謝します。

4

0 に答える 0