2014-05-05 187 views
0

我試圖將圖像上傳到我的App_Data文件夾中。我使用了HttpPostedFileBase,但由於某種原因它總是返回null。 這裏是我的創建方法:MVC獲取圖像的NULL路徑

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult mkCreate(HttpPostedFileBase file) 
    { 
     if (file.ContentLength > 0) 
     { 
      var fileName = Path.GetFileName(file.FileName); 
      var path = Path.Combine(Server.MapPath("~/App_Data"), fileName); 
      file.SaveAs(path); 
     } 
     return View(); 

    } 

這是我的看法(Create.cshtml):

@using (Html.BeginForm("mkCreate", "Resim", FormMethod.Post, new { enctype= "multipart/form-data" })) 
{ 
    <table> 
     <tr> 
      <td>Image:</td> 
      <td><input type="file" name="Images" id="Images" multiple /></td> 
     </tr> 
     <tr> 
      <td>&nbsp;</td> 
      <td><input type="submit" name="submit" value="Upload" /></td> 
     </tr> 
    </table> 
} 

能否請你幫我上傳圖片到我的App_Data文件夾? 在此先感謝。

回答

1

你的圖像模型可能是這樣的:

public class Image 
{ 
    public IEnumerable<HttpPostedFileBase> Images { get; set; } 
} 

你的控制器應該有一個這樣的動作:

[HttpPost] 
[ValidateAntiForgeryToken] 
public ActionResult Create(Image image) 
{ 
    foreach (var file in image.Images) 
     { 
      if (file.ContentLength > 0) 
      { 
       var fileName = Path.GetFileName(file.FileName); 
       var path = Path.Combine(Server.MapPath("~/App_Data"), fileName); 
       file.SaveAs(path); 
      } 
     } 
    ViewBag.Message = "Image(s) uploaded successfully"; 
    return View(); 
} 

最後你的看法可能是這樣的:

@model AppName.Models.Image 

@{ 
    ViewBag.Title = "Index"; 
} 

<h2>Image Upload Test</h2> 

@using (Html.BeginForm(null, null, FormMethod.Post, new { enctype "multipart/form-data" })) 
@Html.AntiForgeryToken() 
@Html.ValidationSummary(true) 
{ 
<table> 
    <tr> 
     <td>Image:</td> 
     <td><input type="file" name="Images" id="Images" multiple /></td> 
    </tr> 
    <tr> 
     <td>&nbsp;</td> 
     <td><input type="submit" name="submit" value="Upload" /></td> 
    </tr> 
</table> 
} 
+0

這是我嘗試後得到的結果:「所需的防僞表單字段」__RequestVerificationToken「不存在」 –

+1

哦,因爲您在控制器上使用了validateantiforryry標記行動,你必須在你的表單上使用@ Html.AntiForgeryToken()。請再次檢查編輯的代碼。 – InsParbo

+0

謝謝你!有效! –

0

與本試加ENCTYPE

public ActionResult Create(HttpPostedFileBase file) 
{ 
//Rest of the code 
} 

查看

@using (Html.BeginForm("YourMethod", "Controller", FormMethod.Post, new { enctype = "multipart/form-data" })) 
     { 
      <input type="file" name="file" id="Images" multiple /> 
     } 
+0

我試過,但返回null太.. –

+0

只包含''中Html.BeginForm()' – Nilesh

+0

仍然得到空enctype' :( –