【问题标题】:Using HTML5 multiple file upload with ASP.NET通过 ASP.NET 使用 HTML5 多文件上传
【发布时间】:2012-12-30 04:25:08
【问题描述】:

我正在尝试使用上传多个文件

<input id="testUpload" type="file" multiple="true"/>

(是的,我知道它不适用于 IE)。但我的问题是,在代码中迭代每个文件并上传之后我应该怎么做?

我在努力

foreach(HttpPostedFile file in Request.Files["testUpload"]){

}

但我明白了

foreach statement cannot operate on variables of type 'System.Web.HttpPostedFile' because 'System.Web.HttpPostedFile' does not contain a public definition for 'GetEnumerator'

我知道我可以为multiple = "false" 做:

HttpPostedFile file = Request.Files["testUpload"];

然后对该文件进行操作。但是如果我选择多个文件呢?如何使用foreach 迭代每一个?

【问题讨论】:

    标签: c# asp.net html file-upload file-io


    【解决方案1】:

    您正在尝试迭代一个文件而不是集合。

    改变

    foreach(HttpPostedFile file in Request.Files["testUpload"]){
    
    }
    

    编辑 - 根据评论更改为 for 循环

    for (int i = 0; i < Request.Files.Count; i++)
    {
        HttpPostedFileBase file = Request.Files[i];
        if(file .ContentLength >0){
        //saving code here
    
      }
    

    【讨论】:

    • 嗯,我在foreach 行中收到此错误:Unable to cast object of type 'System.String' to type 'System.Web.HttpPostedFileBase'.
    • 编辑后生效。但是当我上传文件时,我只上传了一个文件!我尝试输出上传的内容并为 3 个不同的文件获取此文件,其中一个是 Koala.jpgKoala.jpg Uploaded! Koala.jpg Uploaded! Koala.jpg Uploaded!
    • 这告诉我正在挑选 3 个文件。你在哪里输出值?我的机器上运行了示例,并且代码在 Chrome 中按预期工作。还要查看调试器中的 Request.Files 对象以查看其中包含的内容。这可能会给你一些关于你的代码失败的地方
    • 我试过调试它。发现 AllKeys 属性包含 3 个以 input 标签 id 命名的文件,即 testUpload !为什么会这样?!
    • foreach 正在按名称迭代集合。在这种情况下,即使文件集合中有三个项目,每个文件项目的名称都是 testUpload,因为所有三个文件都是从名为 testUpload 的相同输入元素发布的。如果您有三个不同名称的输入元素,则 foreach 循环会起作用,因为文件名值会不同
    【解决方案2】:

    谢谢,谢谢,谢谢。它拯救了我的一天。

    但是,我不得不使用 HttpPostedFile 而不是 HttpPostedFileBase。

    for (int i = 0; i < Request.Files.Count; i++)
    {
        **HttpPostedFile** file = Request.Files[i];
        if(file .ContentLength >0){
        //saving code here
        }
    }

    不管怎样,这很好

    【讨论】:

      猜你喜欢
      • 2012-11-19
      • 1970-01-01
      • 2013-01-05
      • 2014-06-27
      • 1970-01-01
      • 1970-01-01
      • 2014-09-16
      • 2021-12-09
      • 2011-06-22
      相关资源
      最近更新 更多