1

次のコードを使用してファイルをサーブレットにアップロードしようとしています:

    var fd = new FormData();
    fd.append("file", document.getElementById('fileToUpload').files[0]);
    var xhr = new XMLHttpRequest();
    xhr.upload.addEventListener("progress", uploadProgress, false);
    xhr.upload.addEventListener("load", transferComplete, false);
    xhr.addEventListener("error", onError, false);
    xhr.addEventListener("abort", onUploadCanceled, false);

    xhr.open("POST", urlManager.getUploadHandlerUrl());
    xhr.send(fd);

問題は chrome (Firefox で完全に動作) のみにあり、リソースの読み込みに失敗し、問題は一貫していません。1〜2回アップロードすると、叫び声が上がります。これがエラーの場合、サーバーへの呼び出しすら行いません。

この質問のサンプルからjqueryを使用してみました。しかし、何の利益もありません。

このようなことがどうして起こるのか、私には理解できませんでした。リードに感謝します、ありがとう。

ここに画像の説明を入力

編集: XHR をラップし、別のSO answerで説明されているように明示的に非同期に設定すると、少なくとも 3 ~ 4 回のアップロードで機能し、叫び始めます (以前より少し良くなりました)。本当に効果があったのか疑問です。
状態の変化が発生すると、準備完了状態とステータスをログに記録します。readyState は 1 から 4 にジャンプするだけで、ステータスは 0 のままです。

4

1 に答える 1

1

私も同様の問題を抱えていました.HTTPとHTTPSの競合を解決することで問題が解決しました.

ファイルをアップロードするページがHTTPから提供され、作成している投稿リクエストがHTTPSの場合、クロムで「リソースの読み込みに失敗しました」というエラーが発生する可能性があります。それが私の場合です。

提供されるページと投稿リクエストは両方とも HTTP にするか、両方とも HTTPS にする必要があります。両方を組み合わせることができます。

私は両方のHTTPを作成し、私の問題は解決しました。それがあなたの問題も解決したかどうか教えてください。頑張ってください。

于 2013-01-11T09:56:05.850 に答える