Jestem nowy w MVC 4 i próbuję wdrożyć kontrolę przesyłania plików w mojej witrynie. Nie mogę znaleźć błędu. Otrzymuję wartość zerową w moim pliku.
Kontroler:
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");
}
}
Widok:
@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" />
}
asp.net-mvc
file-upload
Liam
źródło
źródło
enctype
formularza kosztowało mnie godzinęOdpowiedzi:
Parametr
Upload
metodyHttpPostedFileBase
musi mieć taką samą nazwę jakfile input
.Więc po prostu zmień dane wejściowe na to:
Można również znaleźć pliki w
Request.Files
:źródło
Index out of bounds
wyjątek, jeśli nie ma pliku wRequest.Files
kolekcji ..?ArgumentOutOfRangeException
, ale masz rację, zaktualizowałemviewmodel
nazwa nieruchomości jest nazwanaAgentPhoto
, musisz mieć następujące informacje:<input type="file" name="AgentPhoto"/>
var path = Path.Combine(Server.MapPath("~/Images/"), fileName);
, nie znaleziono klasy „Serwer”, którego pakietu użyć?Wyjaśniając to. Model:
Po akcji
Wreszcie metoda Extension do sprawdzania pliku hasFile
źródło
Obejrzyj stronę
plik skryptu
W kontrolerze
źródło
AJAX
tutaj.Html.BeginForm
wykonuje już pracę. AJAX jest potrzebny tylko wtedy, gdy nie chcesz przekierowywać do<form action=LINK>
po prostu musisz zmienić nazwę wpisanego pliku, ponieważ taka sama nazwa jest wymagana w parametrze, a nazwa pola wejściowego wystarczy zastąpić ten wiersz Twój kod działa dobrze
źródło
Myślę, że lepszym sposobem jest użycie HttpPostedFileBase w kontrolerze lub interfejsie API. Następnie możesz łatwo wykryć rozmiar, typ itp.
Właściwości pliku można znaleźć tutaj:
MVC3 Jak sprawdzić, czy HttpPostedFileBase jest obrazem
Na przykład ImageApi:
Mam nadzieję, że to pomoże.
źródło
HttpPostedFileBase
.