Загрузка нескольких файлов с использованием одного контроллера ввода

0

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

Теги:
asp.net-mvc-4

2 ответа

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
    но я хочу загружать файлы, используя одно поле ввода, это любой способ в C #
0

вы можете написать webservice, который будет вызываться в контроллере. используйте эту ссылку для получения справки о загружаемом файле, также смотрите в этой ссылке.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню