XMLHttpRequest
でマルチパートとしてファイルをサーブレットに送信できますか?私はフォームを作成して、それを複数パートとして送信していますが、どういうわけか、それをアップロードするための応答が得られません。私はページをリフレッシュしたくないので、それはajaxによって行われなければなりません。xmlHttpRequestでマルチパートとしてファイルを送信
答えて
これは、XHR FormData
API(以前は「XHR2」または「XHRレベル2」の一部であり、現在は「XHR拡張機能」として知られています)でのみ可能です。
var formData = new FormData();
formData.append("myFile", document.getElementById("myFileField").files[0]);
var xhr = new XMLHttpRequest();
xhr.open("POST", "myServletUrl");
xhr.send(formData);
XHRは、適切なヘッダとリクエストボディのエンコーディングについての世話をすると、ファイルは、この例ではで利用できるようになります:あなたは以下のようにそれをアップロードすることができ、このHTML、
<input type="file" id="myFileField" name="myFile" />
を考えると
サーバー側は、myFile
という名前の部分がform-data
となっています。
FormData
APIは古いブラウザではサポートされていないことに注意してください。 caniuse.comには、現在Chrome 7以上、Firefox 3.5以上、Safari 5以上、IE 10以上、Opera 12以上で実装されていることがわかります。
代わりに、jQuery Form pluginを使用することもできます。書かれたJavaScriptコードの任意の行せずに適切に機能してあなたの全体の形は、その後、すぐにちょうど次の行でajaxifiedされます。
$("#formId").ajaxForm(function(response) {
// Handle ajax response here.
});
また、非表示のiframeのトリックによってだけでなく、ファイルのアップロードをサポートしています。詳細な説明については、this jQuery Form documentationも参照してください。通常の(同期)リクエストとajax(非同期)リクエストの両方で傍受できるようにサーブレット・コードを変更するだけで済みます。具体的な例のためにも、この答えを参照してください:次のようにSimple calculator with JSP/Servlet and Ajax
いずれにせよ、アップロードされたファイルは、@MultipartConfig
サーブレットのdoPost()
方法で利用できるようにする必要があります
Part myFile = request.getPart("myFile");
をそれともサーブレットに残っている場合2.5またはそれ以上、Apache Commons FileUpload通常の方法を使用します。 How to upload files to server using JSP/Servlet?
私たちのページで自動的に多くの入力ファイルが生成されたらどうなりますか?私たちはIDを生成できますか? – walox
これは、XHRでmultipart/form-data
を送信することはできません(更新:それはXHR2
と最近のブラウザで可能ですがをBalusCの回答を参照してください。)。
これを達成する一般的な方法は、普通のform
を使用し、代わりにiframe
を使用することです。この方法では、アップロード時にiframe
のみが更新されます。
実際にファイルがアップロードされているかどうかにかかわらず、私は応答が必要です。 また、画像がアップロードされる場所が必要です。 –
Tejasva:Napoluxの例を見て、アップロードが完了したときに親ウィンドウでjs関数を呼び出す方法を指定します。画像の場所も提供することができます。 –
@LinusGThiel可能です。 BalusCの答えを参照してください。 –
- 1. XMLHttpRequestのマルチパート/フォームデータ:マルチパート
- 2. 複数のマルチパートZMQ PUBメッセージを並行して送信する
- 3. マルチパートactionmailerのアクションは、それがマルチパートとして送信しないになりますが、ゴミ
- 4. 同時XMLHttpRequestを送信する
- 5. JavaのSMPPでマルチパートSMSメッセージを送信できません
- 6. AFnetworking 3.0でマルチパート形式のデータを送信できません
- 7. メールに添付ファイルとして.docファイルを送信します。
- 8. Rspec。マルチパート受信者
- 9. XMLHttpRequestは6回後に送信を停止します
- 10. xmlhttprequestが動作するメソッドを送信できません
- 11. XMLHttpRequestとのバイナリ通信?
- 12. ソケットを介してファイルを送信
- 13. BlackBerryでオーディオファイルを添付ファイルとして送信するには?
- 14. PHPで複数の文書を添付ファイルとして送信
- 15. メールで添付ファイルとしてStringListを送信する - Indy
- 16. XMLHttpRequestの応答フォームが送信できない
- 17. リクエストで「マルチパート/関連」をどのように送信するのですか?
- 18. 画像をブラウザに添付ファイルとして送信します
- 19. XMLHttpRequestはFirefoxまたはChromeでリクエスト本体を送信しません。
- 20. Javamail受信メール返送メールとして送信者に返信
- 21. jQuery.ajaxは、I)はjQuery.ajaxを(使用してフォームを送信してい1.7.2を使用してのXMLHttpRequestヘッダ
- 22. 送信ファイルは、私は私のアンドロイドアプリケーションに次のコードを使用してファイルを送信しています
- 23. 送信者をeventargとして送信するには
- 24. Response.BinaryWrite()を使用してファイルを送信したあとで削除します
- 25. 電子メールの添付ファイルとしてpdfを送信
- 26. Android:mms添付ファイルとして音声を送信するには?
- 27. iMessageの添付ファイルとしてスナップショットを送信
- 28. 送信ファイル
- 29. ASP.Net送信ファイル
- 30. ファイルを保存しないでファイルにアクセスし、添付ファイルとして電子メールで送信する
も参照してください:[AjaxとPHP $ _FILESを使用してCanvas要素から画像を送信する](http://stackoverflow.com/a/5303242/938089?sending-images-from- canvas-elements-using-ajax-and-php-files) –