在MVC中上传文件

时间:2013-08-28 11:51:19

标签: c# asp.net-mvc

我有一个表格,它是通过jquery插件中的脚本创建的。

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

我必须上传文件,并将其保存在某个文件夹中。当我选择一个文件,并提交表格时,在表单上调用联系人的行动。来自家庭控制器的联系人行动。

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

但是HttpPostedFileBase文件是null,我没有任何想法。你能帮帮我吗?

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

4 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

从这样创建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" />
}

另外请确保在Controller中,Method有一个属性[HttpPost],如下所示:

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

答案 2 :(得分:0)

也许您的模型绑定在您的代码中无效。你的观点是强烈打字的吗?

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

答案 3 :(得分:0)

你能改变吗?

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();
 }