javascript – 无法在xmlHttpRequest中更改Content-Type

我尝试在发送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"]

有什么建议吗?

最佳答案 问题是Content-type:multipart / form-data应该跟边界:(你的文件边界),但因为你明确地设置它不存在

内容类型:multipart / form-data;边界= —- WebKitFormBoundaryrKBH6bAMJIdepLCI

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

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

点赞