Я пытаюсь загрузить несколько файлов в 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 отображается количество загруженных файлов. В чем проблема?
Измените подпись вашего действия 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" />