关于
使用ajax
进行文件上传时,若设置contentType
为multipart/form-data
或没有设置processData
为false
,会发现后台是无法解析文件的.
写法
- html
<div> <form method="post" enctype="multipart/form-data"> 选择文件:<input type="file" name="uploadFile" id="uploadFile" /><br /> <input type="button" id="upload" value="上传" /> </form> </div>
- js
$(function() { $("#upload").click(function() { var formData = new FormData(); formData.append("uploadFile", document.getElementById("uploadFile").files[0]); $.ajax({ url : "/system/freeImport", type : "POST", data : formData, /** *必须false才会自动加上正确的Content-Type */ contentType : false, /** * 必须false才会避开jQuery对 formdata 的默认处理 * XMLHttpRequest会对 formdata 进行正确的处理 */ processData : false, success : function(data) { console.log('data:%o', data); if (data.success) { alert(data.data); } else { alert(data.message); } }, error : function() { alert("上传失败!"); } }); }); });
参考