FormData对象异步上传文件

XMLHttpRequest Level 2添加了一个新的接口FormData,利用FormData对象,我们可以使用XMLHttpRequest的send()方法异步的提交数据,比起普通的ajax,使用FormData的最大优点是可以异步上传一个二进制文件

var a = new FormData();
//使用append方法向空的FormData对象里添加字段
a.append('username','Jack');
a.append('age',17);	//数字会被转换成字符串
a.append('userfile',files);	//上传文件
a.append('webmasterfile',oBlob);	//二进制对象
var oReq = new XMLHttpRequest();
oReq.open('POST','submitform.php');
oReq.send(a);
//注意:值可以为Blob对象,File对象或者字符串,其它类型的值都会被自动转换为字符串处理

//使用html表单来初始化一个FormData对象
var a = document.getElementById('form');
var oReq = new XMLHttpRequest();
oReq.open('POST','submitform.php');
oReq.send(new FormData(a));

//使用FormData异步上传用户所选择的文件
function sendForm(){
	var txt = document.getElementById('txt');
	var a = new FormData(document.getElementById('file'));
	var oReq = new XMLHttpRequest();
	oReq.open('POST','submitform.php',true);
	oReq.onload = function(oEvent){
		if(oReq.status == 200){
			txt.innerHTML = 'Uploaded!';
		}else{
			txt.innerHTML = 'Error' + oReq.status;
		}
	}
	oReq.send(a);
}

//使用jQuery来发送FormData,但必须要正确的设置相关选项
var a = new FormData(document.getElementById('file'));
$.ajax({
	url : 'submitform.php',
	type : 'POST',
	data : a,
	processData : false,	//告诉jQuery不要去处理发送的数据
	contentType : false		//告诉jQuery不要去设置Content-Type请求头
})
https://developer.mozilla.org/zh-CN/docs/Web/Guide/Using_FormData_Objects

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值