获取input file的文件对象
$("input[type=file]").change(function(e){
file = e.currentTarget.files[0];
})
e.currentTarget.files[0]是个对象,ajax默认不能发送对象,要通过JSON.stringify()转成字符串,否则报错如下:
e.currentTarget.files[0]对象经过JSON.stringify()之后显示是{},我的天!!!我也不知道为什么,但是JSON.stringify()是可以处理object的呀,搞了好久也还是{}
因为还没有后端处理,我也不知道后端拿到的是不是空,我通常都是在浏览器调试面板的Network查看我发送的数据的。
在网上查了很久之后,终于找到方法:
$.ajax({
url:url,
cache: false,
type:'post',
processData : false,
contentType : false,
data:data
});
在一般情况下使用ajax请求,processData(默认为true)不需要设置,但是当使用fromdata上传文件时,发送的对象不需要转化为对象,所以必须设置为false。
发送的参数显示的是[object object]
当然,网上有一些用formData()发送文件的
var form = new FormData();
form.append("file", file);
console.log(form.get("file"));// 打印文件对象
直接console.log(form)是看不到里面的参数的,是个空对象,但是用get(“键值”)可以打印出来,才知道 没有打印≠空
参考:https://www.cnblogs.com/sk-3/p/8194903.html
有个博主写的很好->https://blog.csdn.net/zdy0_2004/article/details/48230685