FormData对象用以将数据编译成键值对,以便用XMLHttpRequest来发送数据。可以使用ajax请求发送multipart/form-data数据。
使用方法
var formData = new FormData();
formData.append("username", "Groucho");
formData.append("accountnum", 123456); //数字123456会被立即转换成字符串 "123456"
// HTML 文件类型input,由用户选择
formData.append("userfile", fileInputElement.files[0]);
// JavaScript file-like 对象
var content = '<a id="a"><b id="b">hey!</b></a>'; // 新文件的正文...
var blob = new Blob([content], { type: "text/xml"});
formData.append("webmasterfile", blob);
var request = new XMLHttpRequest();
request.open("POST", "http://foo.com/submitform.php");
request.send(formData);
对象转formdata
// 对象转formdata
function objToFormData (config) { // 对象转formdata格式
let formData = new FormData()
let obj = config.data
let arrayKey = config.arrayKey
for (var i in obj) {
if (this._.isArray(obj[i])) {
obj[i].map(item => {
if (!arrayKey) {
formData.append(i, item)
} else {
formData.append(i + '[]', item)
}
})
} else {
formData.append(i, obj[i])
}
}
return formData
}
注意
发送时记得修改发送数据类型
headers: {
'Content-Type': 'multipart/form-data'
}