【问题标题】:Upload of two different files, from two different inputs从两个不同的输入上传两个不同的文件
【发布时间】:2013-06-13 11:17:33
【问题描述】:

我目前正在尝试处理来自两个不同<input type="file"/>s 的两个不同文件的上传。

例如:

@using (Html.BeginForm("AddIssue", "Magazine", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<fieldset>
        <div class="editor-field">
            <div class="editor-label">Issue: </div>
            <input type="file" name="issueFile" id="issueFile"/>
        </div>
        <div class="editor-field">
            <div class="editor-label">Cover: </div>
            <input type="file" name="issueCover" id="issueCover"/>
        </div>
        <button type="submit">Save</button>
    </fieldset>
}

我已经弄清楚如何从一个输入中接收一个(或多个)文件,但找不到任何有关如何从多个输入中接收文件的适当信息。

我已经有一个 POST 方法,但不知道我应该在 post 上收到什么。

[HttpPost, Authorize]
public ActionResult AddIssue(string dummy)
{ }

【问题讨论】:

  • 什么不起作用?你的控制器代码是什么样的?从这段代码中我看不出任何明显的问题
  • 控制器动作方法是什么样的?当它包含两个文件参数时会发生什么?
  • 如果我尝试传递两个 HttpPostedFileBase 实例,就像我从单个输入接收单个文件一样,我得到两个空引用,还有 HttpPostedFileBase 数组 - 相同。
  • 更多,获取文件数据的代码在哪里?您应该可以为此添加参数,如下所示:AddIssue(HttpPostedFileBase issueFile, HttpPostedFileBase issueCover)
  • Tnx,musefan,让我大开眼界。我忘记了(因为我只是在学习),两个参数都必须具有与输入相同的名称/ID。

标签: c# asp.net-mvc-4 file-upload


【解决方案1】:

评论后,这里有一个更具体的解决方案...

您需要确保控制器操作参数的名称与表单字段上的name 属性相同。这应该适合你:

public ActionResult AddIssue(HttpPostedFileBase issueFile, HttpPostedFileBase issueCover)
{ }

请记住,name 属性用于识别来自控制器的字段。 id 属性没有任何意义,也不必匹配。

【讨论】:

  • 非常感谢,您真的帮了大忙。
  • 之后如何按名称属性分隔发布的文件。 (我是新手)
猜你喜欢
  • 2013-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-25
  • 1970-01-01
相关资源
最近更新 更多