注意FormData并不支持IE9以下浏览器
第一种,创建一个空的FormData对象,然后使用append()方法向该对象里添加字段
var oMyForm = new FormData(); oMyForm.append("username", "Groucho"); oMyForm.append("accountnum", 123456); oMyForm.append("file", $('#file')[0].files[0]); $.ajax({ url: '/Manage/UploadImg', type: 'POST', cache: false, data: oMyForm, processData: false, contentType: false, async: false }).done(function(res) {}).fail(function(res) {});
第二种,使用HTML表单来初始化一个FormData对象
HTML部分
<form id= "uploadForm"> <p >指定文件名: <input type="text" name="filename" value= ""/></p > <p >上传文件: <input type="file" name="file"/></ p> <input type="button" value="上传" onclick="doUpload()" /> </form>
JS部分
function doUpload() { var formData = new FormData($( "#uploadForm" )[0]);
formData.append('num', '1');//可以在已有表单数据的基础上,继续添加新的键值对
$.ajax({ url: 'http://localhost/file/upload' , type: 'POST', data: formData, async: false, cache: false, contentType: false, processData: false, success: function (returndata) { alert(returndata); }, error: function (returndata) { alert(returndata); } }); }
注:
processData
设置为false
。因为data
值是FormData
对象,不需要对数据做处理。cache
设置为false
,上传文件不需要缓存contentType
设置为false
。