jQuery Ajaxはマルチパートフォームを送信します
Javascript
FormData`と
$ .ajax() `を使用してマルチパートフォームを提出する方法を示す簡単なjQuery Ajaxの例
1. HTML
複数のファイルアップロード用のHTMLフォームと余分なフィールド。
<!DOCTYPE html> <html> <body> <h1>jQuery Ajax submit Multipart form</h1> <form method="POST" enctype="multipart/form-data" id="fileUploadForm"> <input type="text" name="extraField"/><br/><br/> <input type="file" name="files"/><br/><br/> <input type="file" name="files"/><br/><br/> <input type="submit" value="Submit" id="btnSubmit"/> </form> <h1>Ajax Post Result</h1> <span id="result"></span> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script> </body> </html>
2. jQuery.ajax
2.1フォームからJavascriptの `FormData`オブジェクトを作成します。
var form = $('#fileUploadForm')[0]; var data = new FormData(form);
2.1
processData:false
、データをクエリー文字列に変換するjQueryフォームを防止する
$.ajax({ type: "POST", enctype: 'multipart/form-data', processData: false, //Important! contentType: false, cache: false,
2.3完全な例。
$(document).ready(function () { $("#btnSubmit").click(function (event) { //stop submit the form, we will post it manually. event.preventDefault(); //Get form var form = $('#fileUploadForm')[0]; //Create an FormData object var data = new FormData(form); //If you want to add an extra field for the FormData data.append("CustomField", "This is some extra data, testing"); //disabled the submit button $("#btnSubmit").prop("disabled", true); $.ajax({ type: "POST", enctype: 'multipart/form-data', url: "/api/upload/multi", data: data, processData: false, contentType: false, cache: false, timeout: 600000, success: function (data) { $("#result").text(data); console.log("SUCCESS : ", data); $("#btnSubmit").prop("disabled", false); }, error: function (e) { $("#result").text(e.responseText); console.log("ERROR : ", e); $("#btnSubmit").prop("disabled", false); } }); }); });
参考文献
-
https://developer.mozilla.org/en-US/docs/Web/API/FormData/Using
FormData
Objects[MDN
ブートファイルのアップロード例 – AjaxとREST]