[英]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.