【问题标题】:File uploading in MVCMVC中的文件上传
【发布时间】:2013-08-31 11:29:47
【问题描述】:

我有一个这样的表单,它是由 jquery 插件中的脚本创建的。

elem.insertHtml('<form method="post" action="Home/ContactUs" enctype="mutlipart/form-data"><input type="file" name="file" id="fileUpload"></form></div>')

我必须上传一个文件,并将其保存在某个文件夹中。当我选择一个文件并提交表单时,在表单提交上调用 ContactUs 操作。Home 控制器有 ContactUs 操作。

public ActionResult ContactUs(HttpPostedFileBase file, ContactFormModel model)
{
    //other code
}

但是 HttpPostedFileBase 文件为空,我不知道为什么。你能帮帮我吗?

当我使用 Html.BeginForm 创建表单时,它可以正常工作,但脚本出现问题。

【问题讨论】:

  • 会不会是enctype="mutlipart/form-data"的错字?
  • 没有 enctype 我会出现验证错误。
  • 我认为你错过了@Anton 的观点——你把mutlipart/form-data 放在了multipart/form-data

标签: c# asp.net-mvc


【解决方案1】:

您可以使用“文件”方法上传文件并检索它们。在您的项目中创建一个文件夹,例如“FileUploads”,然后在其中上传文件。我给你一个链接,你可以在其中看到完整的实现:- Upload,Save and Retrieve Image from database by using their Id in Code First Method

【讨论】:

    【解决方案2】:

    这样创建 HTML 表单:

    @using (Html.BeginForm("Index", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
    {
        <input type="text" name="Subject"/>
        <input type="file" name="file" />
        <input type="submit" value="OK" />
    }
    

    还要确保在你的控制器中,方法有一个属性[HttpPost],如下所示:

    [HttpPost]
    public ActionResult ContactUs(HttpPostedFileBase file, ContactFormModel model)
    {
        //other code
    }
    

    【讨论】:

    • 但是我的表单是由脚本创建的。而且我无法在 .cshtml 视图文件中创建它。
    • 你有HttpPost 属性吗?更新了我的答案。 @dotNet_d19
    【解决方案3】:

    也许您的模型绑定在您的代码中不起作用。你的视图是强类型的吗?

    试试这个答案。 https://stackoverflow.com/a/8551621/2664142

    【讨论】:

      【解决方案4】:

      你能改成

      elem.insertHtml('<form method="post" action="Home/ContactUs" enctype="mutlipart/form-data"><input type="file" name="file" id="fileUpload"></form></div>')
      

      elem.insertHtml('<form method="post" action="Home/ContactUs" enctype="multipart/form-data"><input type="file" name="file" id="fileUpload"></form></div>')
      

      你能检查一下 Request.Files.Count 它必须大于 0 如果不能请你评论我

       public ActionResult ContactUs(ContactFormModel model)
       {
          Request.Files[0].SaveAs(Server.MapPath(@"~\files\test.jpg"));
          return View();
       }
      

      【讨论】:

        猜你喜欢
        • 2010-12-09
        • 2013-10-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多