2013-05-18 4 views
0

Я пытаюсь просто добавить файл через MVC3 это мой Вид:загрузки файла с помощью MVC3

@{ 
    ViewBag.Title = "Pic"; 
    Layout = "~/Areas/Admin/Views/Shared/_AdminLayout.cshtml"; 
} 

@using (Html.BeginForm("FileUpload", "Blog", FormMethod.Post)) 
{ 
    <input name="uploadFile" type="file" /> 
    <input type="submit" value="Upload File" /> 
} 

и это мои действия:

public ActionResult FileUpload() 
     { 
      return View(); 
     } 

     [AcceptVerbs(HttpVerbs.Post)] 
     public ActionResult FileUpload(HttpPostedFileBase uploadFile) 
     { 
      if (uploadFile.ContentLength > 0) 
      { 
       string filePath = Path.Combine(HttpContext.Server.MapPath("../Uploads"), 
               Path.GetFileName(uploadFile.FileName)); 
       uploadFile.SaveAs(filePath); 
      } 
      return View(); 
     } 

, что случилось с моим кодом? ? У меня есть эта ошибка

Object reference not set to an instance of an object. 

в этой линии

if (uploadFile.ContentLength > 0) 

ответ

2

Вы должны добавить атрибут ENCTYPE в форму.

@using (Html.BeginForm("FileUpload", "Blog", FormMethod.Post, 
         new { enctype = "multipart/form-data" })) 
0

Добавить new { enctype = "multipart/form-data" } в качестве параметра в вашей форме, и вы хорошо идти. Это будет выглядеть так:

@using (Html.BeginForm("FileUpload", "Blog", FormMethod.Post, 
         new { enctype = "multipart/form-data" })) 

И не проверяйте размер файла для контроля существования. Я предлагаю контролировать, имеет ли он значение null в стороне контроллера.

0

заменить

@using (Html.BeginForm("FileUpload", "Blog", FormMethod.Post)) 

с

@using (Html.BeginForm("FileUpload", "Blog", FormMethod.Post, new { enctype="multipart/form-data"})) 

, чтобы узнать больше о значении ENCTYPE = "многочастному/форм-данных", см here

Смежные вопросы