我需要将一个文件和其他几个输入数据一起上传到ASP.NET MVC。我这样做是为了实现这个目标:
var formData=new FormData();
formData.Append("uploadedFile",$('input[type="file"]')[0].files[0]);
$.ajax({
url: "/Test/TestFormData",
data: formData,
cache: false,
contentType: false,
processData: false,
dataType:"json",
type: 'POST'
});
我无法弄清楚如何在服务器端使用正确的模型绑定来处理这个问题(如果可能的话),所以我决定通过按键搜索Form:
public class TestControler:Controller
public void TestFormData(){
var file=Request.Form["uploadedFile"];//file is null here
}
当我尝试访问它时,问题是file
为null。这是请求标题和有效负载:
为了在服务器端获取文件,我还需要做些什么吗?
答案 0 :(得分:0)
经常,@ Steve Muecke的回复帮助我找到了解决方案。虽然我没有得到我所需要的100%,但它总比没有好。我确实完成了@Stephen在this answer中提出的建议,但就我而言,它并没有帮助。对于为什么没有任何线索。所以这就是我最终的结果:
var formData=new FormData();
formData.append("uploadedFile",$('input[type="file"]')[0].files[0]);
var doc={};
doc.Subject="TestSubject";
doc.DocBody="Test body";
doc.Receiver="Someone@somewhere";
formData.append('doc',JSON.stringify(doc));
public class TestControler:Controller
public void TestFormData(HttpPostedFileBase uploadedFile){
var doc=Request.Form["doc"];
}
如您所见,我从不同的地方访问上传的文件和doc对象。参数名称必须与我们在客户端附加到formData的参数名称匹配,否则参数将为null。不知道为什么但是如果我添加另一个名为doc
的参数不起作用。我的意思是它是空的,这就是我必须通过Form["doc"]
访问它的原因。