У меня хорошо работает следующее:
@using (Html.BeginForm("someaction", "somecontroller", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<input type="file" name="file" />
<button type="submit">Upload</button>
}
Обратите внимание, что для ввода файла должен быть указан name
, который будет использоваться позже в действии контроллера для извлечения файла.Тот факт, что вы получаете Request.File.Count = 0, является очень убедительным свидетельством того, что вы не указали имя для поля ввода.
и действие:
[HttpPost]
public ActionResult SomeAction(HttpPostedFileBase file)
{
if (file != null && file.ContentLength > 0)
{
var filename = Path.GetFileName(file.FileName);
filename = Path.Combine(Server.MapPath("~/uploads"), filename);
file.SaveAs(filename);
}
return View();
}
и если вы хотите использовать FormCollection (что я бы не рекомендовал):
[HttpPost]
public ActionResult SomeAction()
{
var file = Request.Files["file"];
if (file != null && file.ContentLength > 0)
{
var filename = Path.GetFileName(file.FileName);
filename = Path.Combine(Server.MapPath("~/uploads"), filename);
file.SaveAs(filename);
}
return View();
}
Вы также можете оформить следующую запись в блоге .