用ajax发送input file文件

获取input file的文件对象

$("input[type=file]").change(function(e){
	file = e.currentTarget.files[0];
})

e.currentTarget.files[0]是个对象,ajax默认不能发送对象,要通过JSON.stringify()转成字符串,否则报错如下:
用ajax发送input file文件_第1张图片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

你可能感兴趣的:(ajax发送file文件)