1

在 ASP.NET MVC4 中,文件上传视图总是向控制器发送 null。我不知道为什么,我不知道如何解决它并且搜索已被证明是徒劳的......

控制器方法:

[HttpPost]
[ValidateInput(false)]
public ActionResult uploadCustomImage(int id, HttpPostedFileBase file)
{}

看法:

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

它可以很好地进入控制器,因此路由一切正常。但文件始终为空。我尝试了几种不同的方法:重命名输入/对象,不使用文件参数并调用它: HttpPostedFileBase file = Request.Files["file"]; (结果也为空)

我尝试包含一个 formcollection 作为参数(有和没有不必要的表单元素)。这个文件仍然是空的。

我当然是在按提交之前选择一个文件 =P 我已经尝试了多个文件;具有非常基本的文件名(没有奇怪的 unicode,甚至没有空格)和更奇怪的文件名。大文件,小文件。

一切都是空的!我哪里出错了?

4

2 回答 2

0

你的名字不对齐......你需要在你的控制器中绑定你的文件控件“postedFile”

于 2013-02-20T02:11:07.323 回答
0

试试这样:

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

[HttpPost]
[ValidateInput(false)]
public ActionResult uploadCustomImage(int id, HttpPostedFileBase fileToUpload)
{}

[编辑]

我刚刚在我正在处理的项目中实现了一个上传功能并且它有效。

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

    <input type="submit" id="Submit" name="Submit" value="Submit"/>

}


public ActionResult Import()
{
    if (Request.Files["UploadedXlsFile"].ContentLength > 0)
    {
       .............Do stuff ................
    }
}

以前的代码对我有用。如果我在 Action 方法中放置一个断点,我可以看到该文件不为空。

于 2013-02-21T20:29:15.263 回答