Ich bin neu in MVC 4 und versuche, File Upload Control auf meiner Website zu implementieren. Ich kann den Fehler nicht finden. Ich erhalte einen Nullwert in meiner Datei.
Regler:
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");
}
}
Aussicht:
@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
quelle
quelle
enctype
des Formulars hat mich eine Stunde gekostetAntworten:
Der Parameter der
Upload
MethodeHttpPostedFileBase
muss denselben Namen haben wie derfile input
.Ändern Sie einfach die Eingabe in Folgendes:
Sie können die Dateien auch finden in
Request.Files
:quelle
Index out of bounds
Ausnahme, falls sich keine Datei in derRequest.Files
Sammlung befindet?ArgumentOutOfRangeException
, aber Sie haben Recht, ich habe aktualisiertviewmodel
Immobilie benanntAgentPhoto
ist, müssen Sie Folgendes in Ihrer Ansicht haben:<input type="file" name="AgentPhoto"/>
var path = Path.Combine(Server.MapPath("~/Images/"), fileName);
, die Klasse "Server" nicht gefunden, welches Paket verwendet?Klarstellung. Modell:
Post Action
Schließlich die Erweiterungsmethode zum Überprüfen der hasFile
quelle
Seite anzeigen
Skriptdatei
Im Controller
quelle
AJAX
hier nicht.Html.BeginForm
macht den Job schon. AJAX wird nur benötigt, wenn Sie keine Weiterleitung zum<form action=LINK>
Sie müssen nur den Namen Ihrer Eingabedatei ändern, da für Parameter und Eingabefeldname derselbe Name erforderlich ist. Ersetzen Sie einfach diese Zeile. Ihr Code funktioniert einwandfrei
quelle
Ich denke, der bessere Weg ist die Verwendung von HttpPostedFileBase in Ihrem Controller oder Ihrer API. Danach können Sie einfach Größe, Typ usw. erkennen.
Dateieigenschaften finden Sie hier:
MVC3 So überprüfen Sie, ob HttpPostedFileBase ein Image ist
Zum Beispiel ImageApi:
Hoffe es hilft.
quelle
HttpPostedFileBase
.