赞
踩
今天遇到一个问题,项目js使用formData 上传文件,每次添加一个文件就在formData中添加一个file对象,以这种方式 form.append("file", $("#file")[0].files[0]);
添加,但是每次添加的file都用的同一个 key名:file;
当要求上传方法支持删除时,若使用form.delete("file");
方法删除时,则会把所有的formData 中的file对象全部删除,这时候就很难办了;弄了好久才发现formData 中存在一个form.getAll("file");
的获取方法;于是乎只需要使用这段代码就能在删除formData 后重置formData :
//删除file 这里的thisVal是点击删除按钮时获取当前删除的文件名称
var thisVal= $(_this).parent().parent().find(".files-open-upright-row-a").text();
//删除文件的页面显示
$(".fail-reroad").find('.files-open-upright-row-a3:contains('+thisVal+')').parent().parent().remove();
//获取所有添加的file 对象数组
var files = form.getAll("file");
form.delete("file");
for(var i in files){
if(files[i].name !=thisVal){
form.append("file",files[i]) ;
}
}
form.getAll("file"); 这个方法返回的是一个数组,也就是说,当调用formData 的append方法赋值时,
如赋值的key相同时,他默认存放了一个数组进去
补充:如果是ie浏览器不支持formData的get 方法,这边可以使用js中的map对象来存取file
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。