【问题标题】:How to find out which file upload input a file came from?如何找出文件来自哪个文件上传输入?
【发布时间】:2013-04-05 02:59:31
【问题描述】:

在我的操作方法中,我目前将 3 个文件作为单独的 HttpPostedFileBase 对象传递。我想将它们作为 IEnumerable 容器传递,但我如何才能找出它们来自哪个上传控件?

谢谢。

【问题讨论】:

    标签: asp.net-mvc file-upload


    【解决方案1】:

    不确定我是否完全理解没有代码的意思,但是...

    public ActionResult Upload(HttpPostedFileBase file1, HttpPostedFileBase file2, HttpPostedFileBase file3) {
    

    在您接收帖子的方法中,file1、2、3 等是客户端字段的名称,将为您提供该信息。

    如果以上不是您需要的,请提供更多信息。

    【讨论】:

    • 不,你是对的,这样做确实给了我信息,因为 MVC 映射了参数名称。我现在就是这样。我想做的是将它们作为 IEnumerable 文件传递​​,这样我就可以遍历它们。如果我这样做了,我怎么知道文件来自哪个输入控件?例如,如果他们选择不上传所有 3 个文件而只上传 1 个或 2 个文件?在这种情况下,我需要知道他们上传了哪些。
    • 在您看来,您需要将文件输入名称引用为 files[0]、files[1]、files[2] 等。modelbinder 很乐意将它们全部放入IEnumerable<HttpPostedFileBase> files 和顺序是您指定的顺序,即第一个是名称为“files[0]”的顺序。
    • 您当然可以通过在模型中包含集合并在视图中迭代出编辑器模板来做到这一点。在控制器方面,当它通过时,您可以将参数更改为文件列表,您将能够获取项目的索引,以根据具体情况判断哪些已填充或未填充。
    • 好的,如果其中一个文件上传没有被使用,它会在集合中为空还是根本不存在?
    猜你喜欢
    • 2011-04-06
    • 1970-01-01
    • 2015-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多