1、data是FormData
发送的data必须是FormData类型
2、注意processData
把processData设为false,让jquery不要对formData做处理,如果processData不设置为false,jquery会把formData转换为字符串。
3、contentType
查看文件上传的请求头里Content-Type: multipart/form-data; boundary=OCqxMF6-JxtxoMDHmoG5W5eY9MGRsTBp
,参数boundary为请求参数之间的界限标识。
这里的Content-Type不是你设置的,而是FormData的content-type。
如果jquery请求设置了contentType,那么就会覆盖了formData的content-type,导致服务器在分隔参数和文件内容时是找不到boundary,报no multipart boundary was found错误
默认情况下jquery会把contentType设置为application/x-www-form-urlencoded。要jquery不设置contentType,则需要把contentType设置为false。
也就是说contentType:false
,防止contentType覆盖掉formData的content-type。
4、example
var data=new FormData(); $.each(files,function (i,file) { data.append("file",file); }); $.ajax({url:'',type:'post',contentType:false,processData:false,data:data,success:function () { console.log("111"); } });
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。