我尝试在发送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"]
有任何暗示吗?
答案 0 :(得分:1)
问题是Content-type: multipart/form-data
应该跟boundary: (your file boundary)
后面,但因为你明确地设置它不存在
Content-type: multipart/form-data; boundary=----WebKitFormBoundaryrKBH6bAMJIdepLCI
如果您没有设置Content-type
,那么XHR足够聪明,可以理解您正在发送文件,因此我建议您不要设置它或设置boundary