2013-11-04 136 views
15

我試圖通過REST API(可恢復上傳)將我的文件上傳到Google雲端硬盤。 一切看起來都不錯(XMLHttpRequest觸發器onprogressonload事件),但在此之後(加載觸發)Google Drive PUT請求失敗,出現500 Internal Server Error。文件未出現在我的Google雲端硬盤文件夾中。錯誤500進入xhr.onload,而不是在xhr.onerrorGoogle雲端硬盤上傳文件大小限制

同樣的事情,如果即時通訊嘗試通過Google Drive界面上傳該文件。它有時會發生,我沒有100%複製的環境。

文件類型的Adobe .DNG佳能.CR2和文件大小〜28MB

什麼即時做錯了?它是否知道文件類型或文件的缺陷或限制?

可能的原因:文件大小限制,文件類型限制或可能我的令牌在我的文件上傳時到期?

UPD:即時通訊使用this uploader原樣,只是與外觀的變化。

+1

這應該很容易消除你的3種可能性2。文件類型限制會觸發任何文件大小,我期望405狀態。除非你有convert = true,否則Drive不關心你的文件類型是什麼。如果你的令牌過期了,你應該得到一個401.所以我個人的猜測是它是一個錯誤/文件大小問題。此頁面https://support.google.com/drive/answer/37603?hl=en表示未轉換文件的限制爲10GB。 – pinoyyid

+0

這是服務器響應參數:{「error」:{「errors」:[{「domain」:「global」,「reason」:「internalError」,「message」:「InternalError」}],「code」:500 ,「message」:「InternalError」}} –

+0

我認爲這是一個Drive錯誤,除非有人從Google確認。您可能想嘗試使用較舊的文檔列表API,這似乎更可靠。 – pinoyyid

回答

4

好的。我知道了。

文件上傳成功Content-Type ==「application/octet-stream」。看起來像谷歌移動端與mime類型的文件的錯誤。 在這種情況下,我的原始文件(DNG,CR2,NEF等)以不正確的MIME類型存儲在GoogleDrive中(結果沒有這些文件的預覽)。

所以我不能過濾MIME類型的文件了。

Query string = (mimeType = 'image/x-adobe-dng' or mimeType = 'image/x-canon-cr2' or mimeType = 'image/x-nikon-nef'). 

我試圖通過標題關鍵字來過濾文件,但看起來像標題不包含擴展,但在應對項目名稱包含擴展。

所以我要通過MIME類型或標題不過濾我的文件,但全文關鍵字。

Query string = (fullText contains '.dng' or fullText contains '.cr2' or fullText contains '.nef'). 

結論:

  1. Google雲端硬盤上傳檢查Content-Type的,即使轉換選項設置爲
  2. GoogleDrive不時失敗,此轉換
  3. 上傳器正常工作Content-Type =='application/octet-stream'
  4. GoogleDrive查詢字符串關鍵字標題不包含文件擴展名,但在響應標題有擴展名。
  5. GoogleDrive查詢字符串關鍵字fullText包含擴展名爲(mb對文本文件不太快)的文件名。
  6. 要測試您的請求,您可以在頁面末尾使用此工具https://developers.google.com/drive/v2/reference/files/list。從時間
  7. Google雲端硬盤API崩潰時間,HTTP狀態500內部服務器錯誤

{"error":{"errors":[{"domain":"global","reason":"backendError","message":"Backend Error"}],"code": 500,"message": "Backend Error"}}

+0

該問題是特定於可以縮略圖的類型。非常大的文件會導致該服務超時,從而導致500錯誤。不知道什麼時候這將被修復,但在路線圖上。 –

+0

@SteveBazyl,如果您對縮略圖數碼照片原始格式有任何疑問,我可以爲您或您的團隊提供一些建議。 –

+1

這不是問題的格式,而是架構約束。有一個修復計劃。 –

2

我認爲這會與原始照片文件相關,因爲除非您指定convert = false,否則DRIVE會嘗試使用convert them to JPG(如在Google+中所做的操作)。您應該在您的上傳API中指定不轉換該文件。

第二篇文章說它可以讓你預覽文件up to 25MB,這個大小限制可能與你的麻煩有關。也許你可以嘗試上傳小於這個尺寸的另一張照片,以確保它不是限制。

+0

關於轉換 - 不,我使用可恢復的上傳並將其設置爲false。不止500多次,這種情況不時發生。 關於文件大小 - 不是。有時大文件正確上傳,有時不正確。 只有一件事很清楚 - 它發生在大文件上。小文件始終正確上傳。 –

+0

聽起來像我可能只是有點點互聯網連接,這將很難在日誌和錯誤。在工作中嘗試相同的設置,星巴克等,看看你的擊球平均水平是否有所提高。 – dandavis

0

我也看到這個500錯誤與谷歌分析幾次,其正常由於服務器很忙的事實。如果我稍等一會再試一次就行了。嘗試閱讀本文https://developers.google.com/drive/handle-errors#implementing_exponential_backoff這個工作使我能夠與Google Analtyics API一起工作,通常在到達第6步時再次訪問它。還沒有嘗試過與谷歌驅動器,但後來我還沒有嘗試上傳一個25米的文件。但我敢打賭你的問題。

+0

雖然這是正確的,但它只是故事的一小部分。各種谷歌後端投擲許多不同的500後,其中一些成功的重試,其中許多不。所以做expo-backoff有時候是正確的,但有時它會無限期地退後,直到你最終放棄並通知用戶。 – pinoyyid

+0

在我的情況下,它正常地與谷歌分析大量數據一次查詢幾個月的用戶。添加過濾器和它縫合的東西需要一段時間,服務器才能處理它。添加一些重試解決了問題。如果數據太多,那麼系統會逐月循環。 – DaImTo

相關問題