12

IE9 でサポートする必要がある ajax を使用してファイルをアップロードする必要があります。ここで述べたように FormData を使用していました。私のコードは次のようになります。

var files = new FormData();
JQuery.each($('#file')[0].files, function (i, file) {
    files.append('file', file);
});

$.ajax({
    type: "POST",
    url: '/url',
    cache: false,
    contentType: false,
    processData: false,
    data: files,
    ...
});

これは Safari と Firefox では問題なく動作しますが、IE9 では FormData がサポートされていないため、IE9 では失敗します。次のように設定して、ファイルとして送信しようとしました:

data: $('#file')[0].files[0]
contentType: 'multipart/form-data'

データが URL エンコード形式で送信され、Java 側で解析できないため、これは失敗します。これを解決する方法についてのヘルプやポインタは大歓迎です。すべてのブラウザで動作するものが必要です。

編集:ファイルは通常小さいため、アップロードの進行状況バーは必要ありません。複数のファイルをアップロードする必要はありません。単一のファイルのアップロードが必要です。

4

1 に答える 1

18

残念ながら、ファイルの送信にAjax(つまり)を使用することはできませんが、「自然な」方法を使用してユーザーが選択したファイルを送信するを含むXMLHttpRequestを使用して、同様の動作を実装できます。javascriptを使用して呼び出し、次に親ドキュメントからポーリングして、ファイルのアップロードプロセスが完了したかどうかを確認できます。<iframe/><form method="post" enctype="multipart/form-data"/><input type="file"/>form.submit()<iframe/>

jQueryこの仕事を成し遂げるためのクールなプラグインがたくさんあります。たとえば、私のお気に入りのプラグインがあります。

于 2012-11-21T16:30:33.357 に答える