使用单输入控制器上传多个文件

时间:2013-12-16 08:31:03

标签: c# html asp.net-mvc-4

我正在尝试在ASP.NET MVC中上传多个文件,我的控制器是

 public ActionResult GalleryAdd()
    {
        foreach (string fil in Request.Files)
        {
            HttpPostedFileBase file = Request.Files[fil];
            var fileName = Path.GetFileName(file.FileName);
            var path = Path.Combine(Server.MapPath("~/Images/Gallery"), fileName);
            file.SaveAs(path);
        }
        return RedirectToAction("Index");
    }

我的输入字段是

<input type="file" id="files" name="files" multiple>

问题是始终只上传一个文件(第一个文件)。 Foreach循环只接受第一个文件,但Request.Files Count显示上传的文件数。这是什么问题

2 个答案:

答案 0 :(得分:2)

更改GalleryAdd操作的签名以获取IEnumerable的HttpPostedFileBase,然后您可以迭代从视图传入的文件:

public ActionResult GalleryAdd(IEnumberable<HttpPostedFileBase> files)
{
     foreach (string file in files)
     {
         //iterate over files
     }
}

然后为每个要添加的文件添加文件输入:

<form action="@Url.Action(GalleryAdd)" method="post" enctype="multipart/form-data">

    <label for="file1">Filename:</label>
    <input type="file" name="files" id="file1" />

    <label for="file2">Filename:</label>
    <input type="file" name="files" id="file2" />

    <input type="submit"  />

答案 1 :(得分:0)

您可以编写将在控制器中调用的webservice。 使用this链接获取有关上传文件的帮助 也请查看this链接。