无法上传图片(HttpPostedFileBase为Null)

时间:2013-03-14 08:30:22

标签: c# asp.net-mvc-3 image file-upload

我试图有一个图片上传器但是当我点击浏览并选择图片然后提交我的表格时,HttpPostedFileBase为空。我的实施是否遗漏了?请帮忙。

查看

<form action="Home/UploadImage" method="POST">
    <p>
        <input type="file" accept="image/x-png, image/gif, image/jpeg" name="projectBgImage" id="projectBgImage"/>
    </p>
    <input type="submit" value="submit"/>
</form>

家庭控制器

 public ActionResult UploadImage(HttpPostedFileBase projectBgImage)
    {
        return View();
    }

调试图片

enter image description here

2 个答案:

答案 0 :(得分:7)

添加enctype attribute您的form元素

<form action="Home/UploadImage" method="POST" enctype="multipart/form-data"> 

我建议你像这样使用BeginForm html-helper:

@using (Html.BeginForm("UploadImage", "Home", FormMethod.Post, new { id = "form", enctype="multipart/form-data" }))
{
    <p>
        <input type="file" accept="image/x-png, image/gif, image/jpeg" name="projectBgImage" id="projectBgImage"/>
    </p>
    <input type="submit" value="submit"/>
}
带有[HttpPost]注释的

和操作方法

[HttpPost]
public ActionResult UploadImage(HttpPostedFileBase projectBgImage)
{
    return View();
}

额外信息:Phil Haack的一篇不错的博文Asp.net MVC Upload

答案 1 :(得分:2)

在视图中,enctype属性需要设置为multipart/form-data

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

其次, 在您的操作方法之上,请确保您拥有HTTPPOST属性。

[HttpPost]
public ActionResult SaveFile(HttpPostedFileBase projectBgImage)