Загрузчик файлов в asp.net mvc - PullRequest
       23

Загрузчик файлов в asp.net mvc

1 голос
/ 19 августа 2010

Как определить идентификатор ввода (type = "file") для загрузки файла при загрузке файла на сервер.

Позвольте мне подробно объяснить:

У меня есть несколько элементов управления загрузкой файлов на моей страницеи другой файл управления сохранением в разных папках, таких как «Fileupload1», сохранит файл в «Folder1» и т. д.

Ответы [ 3 ]

4 голосов
/ 19 августа 2010

Вы не можете.id элемента HTML никогда не отправляется на сервер при публикации формы.Что касается атрибута name, вы можете просмотреть коллекцию Request.Files .В ASP.NET MVC чаще используются параметры действия.Пример:

<form action="" method="post" enctype="multipart/form-data">
  <input type="file" name="files" id="file1" />
  <input type="file" name="files" id="file2" />
  <input type="file" name="files" id="file3" />
  <input type="submit" value="Upload files" />
</form>

и действие вашего контроллера:

[HttpPost]
public ActionResult Index(IEnumerable<HttpPostedFileBase> files) 
{
    foreach (var file in files) 
    {
        if (file.ContentLength > 0) 
        {
            var fileName = Path.GetFileName(file.FileName);
            var path = Path.Combine(Server.MapPath("~/App_Data"), fileName);
            file.SaveAs(path);
        }
    }
    return RedirectToAction("Index");
}

Это так просто.

0 голосов
/ 19 августа 2010

У вас не будет доступа ни к одному элементу DOM, поскольку ASP.NET MVC использует FileCollectionModelBinder для создания коллекции файлов.Поэтому то, что вы получаете в своем контроллере, не имеет ничего общего с DOM.Но хорошо то, что, поскольку это коллекция, вы можете получить доступ к индексу файла.

  <input type="file" name="files[0]" id="file1" />
  <input type="file" name="files[1]" id="file2" />
  <input type="file" name="files[2]" id="file3" />

Тогда, если вам нужно загрузить файлы [0] в папку Y и файлы [1] в папку Z, вы можетеполучить доступ к индексу коллекции файлов.

switch (index)
{
   case 0:
   // Upload to Y
   case 1:
   // Upload to Z
   default:
}
0 голосов
/ 19 августа 2010

Как указывает Дариан, ID не отправляется.Но атрибут name таков, что загрузка файла должна выглядеть примерно так:

<input type="file" name="contactsFile" />

, что позволит вам использовать такой метод, как

public ActionResult UploadFile(HttpPostedFileBase contactsFile)

в контроллере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...