首页 > 代码库 > FormData实现上传多图片,学习使用FormData
FormData实现上传多图片,学习使用FormData
FormData对象是为序列化表以及创建与表单格式相同的数据(当然是用于XHR传输)提供便利。
今天我们使用dropzone和FormData实现多文件上传功能。
var SAMP = null; //Dropzone对象 SAMP = new Dropzone("#dropzone", { url: "#", //后台响应的链接 maxFiles: 4, //最大可以传输的文件数量 目前我们设定为1 maxFilesize: 2048, //文件大小的限制 acceptedFiles: ".png,.jpg,.gif,.jpeg,.bmp", // 文件格式的限制 autoProcessQueue:false, //文件是否自动传回到后台 myAwesomeDropzone:false, })
我们设置文件不自动上传,而通过控件按钮实现上传功能。首先我们创建一个Dropzone对象,设置上传的最大文件数量,文件大小等。
var myFormData = http://www.mamicode.com/new FormData()>
创建Form Data对象
SAMP.on("addedfile", function(file) { myFormData.append(file.name, file) })
给Dropzone对象注册addedfile事件,当上传文件时,FormData对象的append()函数是以键值对的方式向myFormData成对成对的增添图片对象。
$.ajax({
type:‘POST‘, url:"/upload-img/", data:myFormData, processData: false,//*必须写 contentType: false,//*必须写
success:function(data){
...
},
error:function(XMLHttpRequest, textStatus, errorThrown){
...
}
});
在使用FormData对象通过Ajax向后台传数据时,必须在选项中设置"processData: false,contentType: false,"两项,否则会报错。
processData
设置为false
。因为data
值是FormData
对象,不需要对数据做处理。
contentType
设置为false
。因为是由<form>
表单构造的FormData
对象,且已经声明了属性enctype="multipart/form-data"
,所以这里设置为false。
FormData实现上传多图片,学习使用FormData
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。