2013-11-27 5 views
1

Я отправляю простой текстовый файл в asp.net MVC-приложение. Когда я отправляю сообщение с использованием формы ниже, параметр формы не равен нулю. Но файл есть. Любые идеи, что я делаю неправильно?Как отправить файл asp.net в mvc-приложение?

<form method=post action="http://localhost/Home/ProcessIt" 
enctype="application/x-www-form-urlencoded"> 
<input type=file id="thefile" name="thefile" /> 
<input type="submit" name="Submit" /> 
</form> 

В ASP.NET MVC приложение:

[HttpPost] 
public ActionResult ProcessIt(FormCollection thefile) 
{ 
    HttpPostedFileBase file = Request.Files["thefile"]; 
    ... 
} 
+2

http://stackoverflow.com/questions/5193842/file-upload-asp-net-mvc-3-0/5193851#5193851 – Shyju

+0

Если я использую HttpPostedFileBase, параметр будет нулевым , – 4thSpace

+0

используют одно и то же имя для вашего элемента ввода и параметра метода. Следуйте по ссылке, которую я разместил – Shyju

ответ

5

Это работает для меня:

Вид:

@using (Html.BeginForm("Index", "Home", FormMethod.Post, new { enctype = "multipart/form-data" })) 
{ 
    <input type="file" name="file" /> 
    <input type="submit" value="OK" /> 
} 

Контроллер:

[HttpPost] 
public ActionResult Index(HttpPostedFileBase file) 
{ 
    // Verify that the user selected a file 
    if (file != null && file.ContentLength > 0) 
    { 
     // extract only the fielname 
     var fileName = Path.GetFileName(file.FileName); 

     // then save on the server... 
     var path = Path.Combine(Server.MapPath("~/uploads"), fileName); 
     file.SaveAs(path); 
    } 
    // redirect back to the index action to show the form once again 
    return RedirectToAction("Index");   
} 
+0

Вместо того, чтобы копировать и вставлять решения как свои собственные, вы должны действительно указывать на оригинал. http://stackoverflow.com/a/5193851/1759873 –

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