17

REST API (再開可能なアップロード) を介してファイルを Google ドライブにアップロードしようとしています。すべて問題ないように見えますが (XMLHttpRequestトリガーonprogressonloadイベント)、その後 (onload がトリガーされた後)、Google ドライブの PUT リクエストは で失敗し500 Internal Server Errorます。ファイルが Google ドライブ フォルダに表示されません。エラー 500 はxhr.onloadではなく で発生しxhr.onerrorます。

Google ドライブ インターフェイス経由でそのファイルをアップロードしようとしている場合も同じです。たまにありますし、100%再現できる環境はありません。

ファイルタイプはAdob ​​e .DNGまたはCanon .CR2で、ファイルサイズは ~28MBです。

何が間違っているのですか?ファイルタイプまたはファイルに対する既知のバグまたは制限事項はありますか?

考えられる理由: ファイルサイズの制限、ファイルタイプの制限、またはファイルのアップロード中にトークンの有効期限が切れた可能性がありますか?

UPD:このアップローダをそのまま使用していますが、表面的な変更のみを行っています。

4

3 に答える 3

5

わかった。わかった。

ファイルはContent-Type == "application/octet-stream"で正常にアップロードされます。MIME タイプのファイルを使用した GoogleDrive 側のバグのようです。このシナリオでは、RAW ファイル (DNG、CR2、NEF など) が GoogleDrive に不適切な MIME タイプで保存されます (結果として、これらのファイルのプレビューはありません)。

そのため、MIME タイプでファイルをフィルタリングすることはできなくなりました。

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

キーワード タイトルでファイルをフィルタリングしようとしましたが、タイトルに拡張子が含まれていないように見えますが、応答項目のタイトルに拡張子が含まれています。

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

そのため、MIME タイプやタイトルではなく、fullText キーワードでファイルをフィルタリングする必要があります。

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

結論:

  1. convert オプションがfalseに設定されていても、 GoogleDrive アップローダーはContent-Typeをチェックします。
  2. GoogleDriveは、この変換で時々失敗します。
  3. アップローダはContent-Type == 'application/octet-stream'で正常に動作します。
  4. GoogleDrive クエリ文字列のキーワードtitle にはファイル拡張子が含まれていませんが、応答のタイトルには拡張子が含まれています。
  5. GoogleDrive クエリ文字列のキーワードfullText には、拡張子付きのファイル名が含まれています(テキスト ファイルの場合、mb はあまり高速ではありません)。
  6. リクエストをテストするには、ページの最後にあるこのツールhttps://developers.google.com/drive/v2/reference/files/listを使用できます。
  7. GoogleDrive API は、HTTP ステータス500 Internal Server Errorで時々クラッシュします:

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

于 2013-11-20T16:26:28.517 に答える
0

サーバーがビジーであるという事実のために、Googleアナリティクスでこの500エラーも数回見ましたが、これは正常です。少し待ってからもう一度試すと、うまくいきます。これを読んでみてください https://developers.google.com/drive/handle-errors#implementing_exponential_backoff これは、通常、ステップ6に到達するまでにGoogle Analtyics APIを使用して機能し、再びアクセスできるようになりました。Google ドライブで試したことはありませんが、以前に 25m のファイルをアップロードしようとしたことはありません。しかし、私はそれがあなたの問題だと確信しています。

于 2013-11-20T12:14:51.833 に答える