我正在开发MVC 5应用程序。我需要上传多个文件。Asp.net MVC 5 Ajax多文件上传可能需要价值提供者,建议?
我知道的是HttpPostedFile和HttpPostedFileBase类可以获得一个文件。但我的情况是我需要一次上传多个文件。
我的问题是,
1)由于使用AJAX多文件上传的支持,我需要编写新价值,使我的行动来接受多个文件? 2)如果我实现自定义值提供程序,我应该在action方法中使用哪个参数(应该是IEnumerable<HttpPostedFileBase> f
)?因为我这样做了,并且我得到了null
。
更新
这里是查看
我Ajax调用var files = e.target.files;
if (window.FormData !== undefined) {
var fd = new FormData();
for (x = 0; x < files.length; x++) {
fd.append("file" + x, files[x]);
}
// fd.append("fawad", "ali");
$.ajax({
type: "POST",
url: "/FileOp/FileUpload",
contentType: false,
processData: false,
data: fd,
sucess: function (result) {
// alert();
},
error: function (xhr, status, p3, p4) {
alert(xhr.responseText);
}
});
这里是我的操作方法(HttpPost)
[HttpPost]
public object FileUpload(IEnumerable<HttpPostedFileBase> file)
感谢
你不需要自定义值提供商。你只需要你的视图模型中的一个属性(或者你的POST方法中的一个参数,它是'IEnumerable XXX',其中'XXX'是你的文件输入的名称(并且我假设你正在使用'FormData' [这个答案](http://stackoverflow.com/questions/29293637/how-to-append-whole-set-of-model-to-formdata-and-obtain-it-in-mvc/29293681#29293681)到上传文件使用ajax –
@StephenMuecke“您的文件输入名称”不可能,可以有x个文件,所以第一个文件是'file1',第二个是'file2'等等 – Alex
@StephenMuecke在这里我的控制器调用AJAX $就({ 类型: “POST”, URL: “/ FileOp /文件上传”, 的contentType:假, 过程数据:假, 数据:FD, sucess:功能(结果){ // alert(); }, error:function(xhr,status,p3,p4){alert(xhr.responseText); } }); – Alex