1

我有这段简单的 HTML 代码:

<div>
   <input type="file" name="english-file" />
</div>
<div>
   <input type="file" name="french-file" />
</div>

我在我的模型中使用了以下 C# 行代码:

object receivedFiles = HttpContext.Current.Request.Params["english-file"];

但该对象总是返回 null 。

当然,我可以使用HttpContext.Current.Request.Files,但我想按语言分隔文件(上面的 HTML 代码很简单,但有人可以添加englishfrench+ 添加文件按钮更多的文件)并将它们保存在单独的表中。

我怎么能那样做?

4

1 回答 1

2

这不是文件上传的方式。在表格上Request.Files["english-file"]设置正确后,您应该查看。enctype

举个例子:

@using (Html.BeginForm("upload", "somecontroller", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    <div>
        <input type="file" name="english" />
    </div>
    <div>
        <input type="file" name="french" />
    </div>

    <button type="submit">Upload</button>
}

在控制器动作中:

[HttpPost]
public ActionResult Upload()
{
    var englishFile = Request.Files["english"];
    var frenchFile = Request.Files["french"];
    ...
}

甚至更好:

[HttpPost]
public ActionResult Upload(HttpPostedFileBase english, HttpPostedFileBase french)
{
    ...
}

甚至更好:

[HttpPost]
public ActionResult Upload(IEnumerable<HttpPostedFileBase> files)
{
    ...
}

假设您调整文件输入的名称:

@using (Html.BeginForm("upload", "somecontroller", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    <div>
        <input type="file" name="files" />
    </div>
    <div>
        <input type="file" name="files" />
    </div>

    <button type="submit">Upload</button>
}

我还邀请您阅读以下博客文章

于 2012-04-06T06:53:53.417 回答