无法在xmlHttpRequest中更改Content-Type

时间:2018-03-27 05:44:58

标签: javascript

我尝试在发送xhr数据之前设置Content-Type,如下所示

function uploadFile() {
  var files =  document.getElementById("file1") .files[0] ;
  var formdata = new FormData();
  formdata.append("Key", files);
  ajax = new XMLHttpRequest();
  ajax.upload.addEventListener("progress", progressHandler, false);
  ajax.addEventListener("load", completeHandler, false);
  ajax.addEventListener("error", errorHandler, false);
  ajax.addEventListener("abort", abortHandler, false);  
  ajax.open("POST", "./Save");  
  ajax.setRequestHeader('Content-Type','multipart/form-data;'); 
  ajax.send(formdata);
}

通过更改内容类型,我无法在服务器端获取数据。

如果我删除了设置内容类型的代码,则其工作正常

我的服务器端代码在

之下
HttpContext.Current.Request.Files["Key"]

有任何暗示吗?

1 个答案:

答案 0 :(得分:1)

问题是Content-type: multipart/form-data应该跟boundary: (your file boundary)后面,但因为你明确地设置它不存在

Content-type: multipart/form-data; boundary=----WebKitFormBoundaryrKBH6bAMJIdepLCI

如果您没有设置Content-type,那么XHR足够聪明,可以理解您正在发送文件,因此我建议您不要设置它或设置boundary

(看这里fetch - Missing boundary in multipart/form-data POST