3

我尝试使用图像上传器,但是当我单击浏览并选择图像然后提交我的表单时,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();
    }

调试图像

在此处输入图像描述

4

2 回答 2

8

添加enctype attribute你的form元素

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

我建议你像这样使用BeginFormhtml-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 上传

于 2013-03-14T08:32:52.887 回答
2

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

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

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

[HttpPost]
public ActionResult SaveFile(HttpPostedFileBase projectBgImage)
于 2013-03-14T08:35:08.343 回答