12

IE9でサポートされる必要があるajaxを使用してファイルをアップロードする必要があります。私は前述のようにFormDataを使用していたhereIE9で動作するajaxを使用したファイル/ファイルアップロードの送信

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で正常に動作しますが、いるFormDataはIE9でサポートされていないとして、IE9に失敗します。私のコードは次のようになります。

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

をデータをURLエンコード形式で送信され、Java側で解析できないので、これが失敗した:私はちょうど設定することにより、ファイルとして送信しようとしました。どのようにこれを解決するかについての助けや指針は非常に高く評価されます。私はすべてのブラウザで機能するものが必要です。

EDIT:通常はファイルが小さいため、アップロードプログレスバーは必要ありません。私は複数のファイルをアップロードする必要はありません。私はただ一つのファイルのアップロードが必要です。

+1

私は同様の質問をここで見つけました:http://stackoverflow.com/questions/2320069/jquery-ajax-file-upload –

+0

'

'と入力します。だから、アップロードボタンには「クリック」アクションがあります。このボタンは、ユーザーから取得した入力のタイプを判断し、それに応じてリダイレクトします。私たちは以前これを持っていましたが、これはうまくいっていましたが、ユーザー入力に応じて異なるurl/functionにリダイレクトするように変更されました。 – Alice

答えて

17

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

jQueryは、このジョブを取得するためにa lot of cool pluginsです。例えば、my favorite oneです。

+2

この回答は参考になります:http://stackoverflow.com/questions/166221/how-can-i-upload-files-asynchronously-with-jquery?lq=1 –

+1

Danijarありがとうございます。それが私の問題を解決しました。 IE10を楽しみにしています – Alice

+0

BLOBデータを使用してファイルをサーバーに送信できます。 –

関連する問題