Загрузка нескольких файлов в asp.net mvc
Мне нужно получить файлы из одного файлового загрузчика и нескольких загрузчиков файлов из той же формы. А также нужно знать, из какого поля ввода эти файлы идут.
Из файла Request.Files я могу получить все файлы, но не могу узнать, из какого поля они будут поступать.
У меня есть форма.
<form>
<input type="file" name="file1">
<input type="file" name="files" multiple="true">
</form>`
Ответы
Ответ 1
Используйте модель вместо Request.Files
напрямую. Основываясь на вашем представлении, вы можете сделать что-то вроде этого:
public class UploadForm
{
public HttpPostedFileBase file1 {get;set;}
public IEnumerable<HttpPostedFileBase> files {get;set;}
}
И затем в вашем действии:
public ActionResult Uploade(UploadForm form)
{
if(form.file1 != null)
{
//handle file
}
foreach(var file in form.files)
{
if(file != null)
{
//handle file
}
}
...
}
Ответ 2
Если эти два элемента управления загрузкой имеют разные атрибуты имени, вы можете позволить привязке модели выполнять эту работу. Вам просто нужно указать параметр в действии контроллера так же, как имя вашего элемента управления загрузкой.
public ActionResult Upload(HttpPostedFileBase file1, IEnumerable<HttpPostedFileBase> files)
{
...
}