我在使用MVC 3中的Uploadify上传多个文件时遇到了麻烦。 我选择3个文件并通过ajax发布。我得到控制器中的文件,但有一个问题。 我没有在一个帖子中获得3个文件,而是看到控制器被3个文件命中3次。
我希望控制器中的所有3个文件都可以在一个帖子中使用。
这可能吗?
[HttpPost]
public ActionResult UploadFiles()
{
//This always shows one file i debug mode
foreach (string fileName in Request.Files)
{
}
}
我想一次性处理文件并一次保存。
答案 0 :(得分:2)
如果您想要在您使用的文件上传多个文件,请不要知道Uploadify,但要使用标准格式:
查看:
@using (Html.BeginForm("YourAction","YourController",FormMethod.Post,new { enctype="multipart/form-data"})) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Message</legend>
//your html here
//as many input types you would like but they
//must have a same name attribute (files)
<input type="file" name="files"/>
</fieldset>
控制器:
[HttpPost]
public ActionResult YourAction(FormCollection values, IEnumerable<HttpPostedFileBase> files)
{
//do what you want with form values then for files
foreach (var file in files)
{
if (file.ContentLength > 0)
{
byte[] fileData = new byte[file.ContentLength];
file.InputStream.Read(fileData, 0, file.ContentLength);
//do what you want with fileData
}
}
}
因此,您将IEnumerable<HttpPostedFileBase> files
用于多个文件,HttpPostedFileBase file
用于单个文件,您可以将视图中的输入更改为
<input type="file" name="file"/>
问候。