Я новичок в MVC 4, и я пытаюсь реализовать контроль загрузки файлов на моем сайте. Я не могу найти ошибку. Я получаю нулевое значение в моем файле.
контроллер:
public class UploadController : BaseController
{
public ActionResult UploadDocument()
{
return View();
}
[HttpPost]
public ActionResult Upload(HttpPostedFileBase file)
{
if (file != null && file.ContentLength > 0)
{
var fileName = Path.GetFileName(file.FileName);
var path = Path.Combine(Server.MapPath("~/Images/"), fileName);
file.SaveAs(path);
}
return RedirectToAction("UploadDocument");
}
}
Посмотреть:
@using (Html.BeginForm("Upload", "Upload", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<input type="file" name="FileUpload" />
<input type="submit" name="Submit" id="Submit" value="Upload" />
}
enctype
форме стоило мне часаОтветы:
Параметр
Upload
методаHttpPostedFileBase
должен иметь то же имя, что иfile input
.Так что просто измените вход на это:
Также вы можете найти файлы в
Request.Files
:источник
Index out of bounds
исключение, если вRequest.Files
коллекции нет файла ?ArgumentOutOfRangeException
, но вы правы, я обновилviewmodel
собственность названа,AgentPhoto
вы должны иметь следующее:<input type="file" name="AgentPhoto"/>
var path = Path.Combine(Server.MapPath("~/Images/"), fileName);
, класс "Сервер" не найден, какой пакет использовать?Уточняю это. Модель:
Post Action
Наконец, метод Extension для проверки hasFile
источник
Просмотр страницы
файл сценария
В контроллере
источник
AJAX
здесь не нужно .Html.BeginForm
делает работу уже AJAX нужен только, если вы не хотите перенаправления на<form action=LINK>
вам просто нужно изменить имя вашего входного поля, потому что в параметре требуется одно и то же имя, а имя поля ввода просто замените эту строку. Ваш код работает нормально
источник
Я думаю, что лучше использовать HttpPostedFileBase в вашем контроллере или API. После этого вы можете просто определить размер, тип и т. Д.
Свойства файла вы можете найти здесь:
MVC3 Как проверить, является ли HttpPostedFileBase изображением
Например, ImageApi:
Надеюсь, это поможет.
источник
HttpPostedFileBase
.