2016-01-26 3 views
2

Я создаю веб-приложение для агентства недвижимости и одну из форм, используемых для загрузки свойств. Мне нужно загрузить несколько изображений или файлов, таких как этажные планы в формате pdf, в папку и сохраните свой путь в базе данных (SQL SERVER).Загрузите несколько файлов/путь к файлу с помощью asp.net mvc

Я попытался сделать это самостоятельно, используя некоторую помощь из онлайн-ресурсов, но не смог разобраться.

Это часть моего представления с загрузкой файла.

<div class="file_inputs"> 

<input type="file" id="dev_brochure" name="dev_brochure" class="form-control adminarea_files"> 
<input type="file" id="devListingImg1" name="devListingImg1" class="form-control adminarea_files"> 
<input type="file" id="devListingImg2" name="devListingImg2" class="form-control adminarea_files"> 
<input type="file" id="devListingImg3" name="devListingImg3" class="form-control adminarea_files"> 

</div> 

Это мой контроллер, который обрабатывает файл загрузить

[HttpPost] 
public ActionResult InsertDevelopment(development dev, IEnumerable <HttpPostedFileBase> files) 
    { 
     try 
     { 
      var supportedFileTypes = new [] {"jpg", "jpeg", "png", "gif", "pdf"}; 
      foreach(var file in files) 
      { 
       if(file.ContentLength > 0) 
       { 
       var fileExt = Path.GetExtension(file.FileName).Substring(1); 
     if(!supportedFileTypes.Contains(fileExt)) 
      { 
     TempData["Msg"] = "You have tried to upload a file type that is not allowed"; 
return RedirectToAction("Create"); 
        } 

       } 
       } 

      var devBrochure = Path.GetFileName(Request.Files["dev_brochure"].FileName); 
      var devListingPhoto1_LinkName = Path.GetFileName(Request.Files["devListingImg1"].FileName); 
      var devListingPhoto2_LinkName = Path.GetFileName(Request.Files["devListingImg2"].FileName); 
      var devListingPhoto3_LinkName = Path.GetFileName(Request.Files["devListingImg3"].FileName); 

      return View("Create"); 
     } 
     catch(Exception e) 
     { 
      TempData["Msg"] = "Development upload failed :" + e.Message; 
      return View("Create"); 
     } 


    } 

Моя главная проблема в том, что файлы с точки зрения не принимается в IEnumerable <HttpPostedFileBase> files параметра Действие контроллера.

Я хотел бы получить любую форму руководства, чтобы исправить это. Thanks

+0

использовать его более простой –

ответ

2

Если вы просто разместили форму, убедитесь, что для типа содержимого формы установлено значение multipart/form-data.

<form action="yourAction" enctype="multipart/form-data" method="post"> 

Если вы выкладываете с помощью JQuery/Ajax, а затем проверить this excellent post на эту тему. Вам в основном нужно получить jquery, чтобы подражать сообщению формы с этим типом контента.

Использование HttpFileCollectionValueProvider

Если (на основе вашего комментария/осветления), это не ваша проблема, то это может быть, как вы пытаетесь загрузить эти файлы на уровне контроллера.

Я всегда следил за this advice при загрузке нескольких файлов. Короче говоря, попытайтесь канав, что HttpPostedFileBase параметр или попытаться совмещая ваше имя объекта файла с именем параметра

Если вы хотите придерживаться «файлы» в качестве имени параметра:

<input type="file" name="files[0]" id="files_0" class="form-control adminarea_files"> 
<input type="file" name="files[1]" id="files_1" class="form-control adminarea_files"> 
<input type="file" name="files[2]" id="files_2" class="form-control adminarea_files"> 
<input type="file" name="files[3]" id="files_3" class="form-control adminarea_files"> 
+0

у меня есть, что на моей форме '@using (Html.BeginForm («InsertDevelopment»,«Разработка», FormMethod.Post, новый {ENCTYPE =" multipart/form-data "}))' – Unicornese

+0

И HttpContext.Current.Request.Files пуст? – bri

+0

Да @bri. HttpContext.Current.Request.Files пуст – Unicornese

1

Убедитесь, что ваша форма тег определяет атрибуты

enctype="multipart/form-data" method="post" 

Также убедитесь, что ваши входные-элементы имеют свое имя атрибуты установлен

name="files[0]" 
name="files[1]" 

и так далее

контроля загрузки файла JQuery
Смежные вопросы