簡體   English   中英

在Google Drive Java API中設置uploadType

[英]Setting uploadType in Google Drive Java API

我有同樣的問題,因為這個這個 ,但在Java領域。 這個問題也涵蓋了我想要的內容,但由於沒有答案,我想我會在這里提出一些更詳細的問題。

我通過編寫Java應用程序將文件備份到Google Drive是我的大部分工作。 正如其他人發現的那樣,“內部服務器錯誤500”失敗是上傳的常見問題,但對於小文件,實施建議的指數退避和重試工作正常。 但是,對於大型文件(任何超過幾MB),故障率都高得令人無法接受。 在某些情況下,我的失敗率超過50%,這使得任何長期備份工作都無法實現。

使用Google Drive v2 API插入(上傳)文件時, 文檔會明確指出可以使用三種上傳類型:簡單,多部分和可恢復。 通過向端點URL添加參數來指定上載類型。 顯然,我所追求的是可恢復的上傳類型。

問題

似乎沒有方法可以使用API​​設置此uploadType參數。 有一個方法調用設置每一個可選參數(詳見這里 ),但不是一種方法來設置uploadType到可恢復一嗅。 沒有代碼片段,沒有文檔,沒有任何內容。

有點令人困惑的是,還有一個似乎是不相關的“分塊”媒體上傳模式,這是默認的,我實際上已通過調用request.getMediaHttpUploader().setDirectUploadEnabled(true)禁用我的應用程序,因為它似乎對上傳的可靠性沒有任何影響,無論chunksize設置的是什么,它都會大大減慢上傳速度。

我即將繞過API並手動構建請求,但我真的想知道是否有其他人遇到過/先解決了這個問題。 這是一個明顯的遺漏,我無法相信很多人以前沒有遇到過它。

干杯全都。

大衛。

簡短回答:

當您使用Google Drive java客戶端API時,傳遞給MediaHttpUploader的可恢復上傳的URI似乎與Google Drive API V2上提供的URI相同。 實際上,默認情況下,Google Drive Java客戶端API已經在使用可恢復上傳。

答案很長:

在跟蹤Google Drive Java API客戶端中的代碼之后

com.google.api.services.drive.Drive

- > com.google.api.services.drive.DriveRequest

- > com.google.api.client.googleapis.services.AbstractGoogleJsonClientRequest

你會發現Drive的構造函數將URI傳遞給DriveRequest ,它還將變量uriTemplate傳遞給AbstractGoogleJsonClientRequest 最后, AbstractGoogleJsonClientRequest使用buildHttpRequestUrl()生成Google Drive API參考中提出的可恢復URI。 此URI存儲在AbstractGoogleJsonClientRequest中的變量httpRequestUrl中。 然后將httpRequestUrl傳遞給上傳者的上傳方法。 默認情況下此方法directUploadEnabled默認為false)將使用可恢復上載而不是直接上載。

此頁面上有一個示例https://developers.google.com/gdata/docs/resumable_upload?csw=1#InitialRequestJava

現在,這里讓人感到困惑。 該頁據稱涉及舊式Gdata api。 但是,目前的源代碼位於https://code.google.com/p/google-api-java-client/source/browse/google-api-client/src/main/java/com/google/api/client/ googleapis / media / MediaHttpUploader.java將該頁面引用為它實現的API。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM