在html5中jquery如何用ajax上传文件


现在最新的firefox和chrome都已经支持用 FormData 来自定义 multipart/form-data 的具体字段,这样用ajax上传文件就成了可能,但我在使用最新版jquery的ajax方法上传文件时,却遇到了问题,jquery默认设置的 contentType 不对,导致后端无法正确识别文件上传请求

这是使用原生 XHR 来上传文件时的 header 截图,我们可以清楚的看到Content-Type已经做了特殊设定,这时后端可以正确的接收到文件

文件截图

这是使用jQuery上传的截图,可以看到Content-Type是普通的表单提交,后端完全无法识别这次请求

请输入图片描述

下面是我的代码,不知道是什么问题
http://jsfiddle.net/aejUC/

jquery html5 Ajax JavaScript

叫我跟踪狂 11 years, 5 months ago

contentType: false // 告诉 jQuery 别设置内容类型

var fd = new FormData(document.getElementById("fileinfo"));
fd.append("CustomField", "This is some extra data");
$.ajax({
  url: "stash.php",
  type: "POST",
  data: fd,
  processData: false,  // tell jQuery not to process the data
  contentType: false   // tell jQuery not to set contentType
});

https://developer.mozilla.org/en-US/d...

厕所扣大蛆 answered 11 years, 5 months ago

Your Answer