2017-12-29 22 views
-2

Ich habe versucht, mein Bestes jedoch HttpPostedFileBase filee ist immer nullDatei-Upload ASP.NET MVC funktioniert nicht

Controller Aktion

public ActionResult UploadFile(HttpPostedFileBase filee) 
     { 
      try 
      { 
       if (filee.ContentLength > 0) 
       { 
        string _FileName = Path.GetFileName(filee.FileName); 
        string _path = Path.Combine(Server.MapPath("~/UploadedFiles"), _FileName); 
        filee.SaveAs(_path); 
       } 
       ViewBag.Message = "File Uploaded Successfully!!"; 
       return View(); 
      } 
      catch 
      { 
       ViewBag.Message = "File upload failed!!"; 
       return View(); 
      } 
     } 

Razor Ansicht

@{ 
    ViewBag.Title = "UploadFile"; 
} 

<h2>UploadFile</h2> 

@using (Html.BeginForm("UploadFile", "Home", FormMethod.Post, new { enctype = "multipart/form-data" })) 
{ 

    <div> 
     @Html.TextBox("file", "", new { type = "file" }) <br /> 
     <input type="submit" value="Upload" /> 

     @ViewBag.Message 

    </div> 


} 
+2

Da der Name der Datei eingegeben wird 'file' nicht' filee'. Sie müssen übereinstimmen. –

+0

Werfen Sie einen Blick auf [Diese Antwort] (https://stackoverflow.com/a/8551621/3814721) – mmushtaq

+0

Jeder gute Grund? dafür. Wir haben immer die Wahl, die Instanz nach unserem Wunsch zu benennen. Mitarbeiter Mitarbeiter = neuer Mitarbeiter(); –

Antwort

0

entweder den Namen des Parameters ändern in public ActionResult UploadFile(HttpPostedFileBase filee) bis public ActionResult UploadFile(HttpPostedFileBase file) oder ändern Sie den Namen der Eingabe @Html.TextBox("file", "", new { type = "file" }) in @Html.TextBox("filee", "", new { type = "file" }).

0

Sie müssen den gleichen Namen Ihres Eingabefeldes als Ihren HttpPostedFileBase-Objektnamen verwenden, während Sie an der loosly-Ansicht arbeiten!

Beispiel:

@{ 
     ViewBag.Title = "UploadFile"; 
    } 

    <h2>UploadFile</h2> 

    @using (Html.BeginForm("UploadFile", "Home", FormMethod.Post, new { enctype = "multipart/form-data" })) 
    { 

     <div> 
      @Html.TextBox("filee", "", new { type = "file" }) <br /> 
      <input type="submit" value="Upload" /> 

      @ViewBag.Message 

     </div> 

} 

Oder Wenn Sie nicht möchten, denselben Namen verwenden? Sie müssen nur

Dicht
Beispiel eine eng gekoppelte Ansicht Typ Ansicht verwenden:

@model PROJECTNAME.Models.MODELNAME 

     @{ 
      ViewBag.Title = "UploadFile"; 
     } 

     <h2>UploadFile</h2> 

     @using (Html.BeginForm("UploadFile", "Home", FormMethod.Post, new { enctype = "multipart/form-data" })) 
     { 

      <div> 
       @Html.TextBox(model => model.YOURCOLUMNNAME , "", new { type = "file" }) <br /> 
       <input type="submit" value="Upload" /> 

       @ViewBag.Message 

      </div> 

    } 
Verwandte Themen