图片上传MVC5

时间:2015-11-30 22:37:00

标签: file-upload asp.net-mvc-5

我需要上传图像并将其保存到文件中,但我无法在控制器中捕获它,因为它始终为空。

视图中的

@using(Html.BeginForm("Create", "Products", FormMethod.Post, new { enctype = "multipart/form-data "}))
{
    ....
    <input type="file" name="file" id="file" />

控制器:

[HttpPost]
[AcceptVerbs(HttpVerbs.Post)]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "ProductID,FKSubCategoryID,ProductEnName,ProductArName,ProductEnDescription,ProductArDescription,ProductImage")] Product product,HttpPostedFileBase file)
{ 
    if (ModelState.IsValid)
    {
        product.FKBrandID = 1;
        db.Products.Add(product);
        db.SaveChanges();
        return RedirectToAction("Index");
    }
    return View(product);
}

我已经尝试过:

  • 使用HttpPostedFileBase代替HttpPostedFile
  • Request.Files["file"] null
  • 输入中的参数名称与ActionResult相同
  • enctype = "multipart/form-data ", data_ajax = "false"
  • 添加[AcceptVerbs(HttpVerbs.Post)]

这让我发疯了所以请提出任何建议吗?

1 个答案:

答案 0 :(得分:0)

问题是,您为enctype属性提供的值无效!

仔细看看。在关闭双引号之前你有一个空格!

new { enctype = "multipart/form-data "}

应为new { enctype = "multipart/form-data"}

以下代码应该可以正常工作。

@using(Html.BeginForm("Create", "Products", FormMethod.Post,
                                                 new { enctype = "multipart/form-data"}))
{  
   <input type="file" name="file" id="file"/>
   <input type="submit"/>

}