0

我在 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)
   {

   }
}

我想一次性处理文件并一次性保存它们。

4

1 回答 1

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"/>

问候。

于 2012-04-06T06:24:23.127 回答