C# 在ASP.NET中使用HTML5多文件上载
我正在尝试使用上载多个文件C# 在ASP.NET中使用HTML5多文件上载,c#,asp.net,html,file-upload,file-io,C#,Asp.net,Html,File Upload,File Io,我正在尝试使用上载多个文件 (是的,我知道它对IE不起作用)。但我的问题是,在代码中,我应该做什么来迭代每个文件并上传它 我正在努力 foreach(HttpPostedFile file in Request.Files["testUpload"]){ } 但我明白了 foreach statement cannot operate on variables of type 'System.Web.HttpPostedFile' because 'System.Web.HttpPoste
(是的,我知道它对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”
做些什么:
然后对该文件执行操作。但是如果我选择了多个文件呢?如何使用foreach对每个文件进行迭代?您试图对一个文件而不是集合进行迭代 改变
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
}
for(int i=0;i0){
//在这里保存代码
}
谢谢,谢谢,谢谢。它救了我一天
但是,我不得不使用HttpPostedFile而不是HttpPostedFileBase
for(int i=0;i0){
//在这里保存代码
}
}
Hmm,我在foreach
行中遇到这个错误:无法将'System.String'类型的对象强制转换为'System.Web.HttpPostedFileBase'。
编辑完成后,它工作了。但是当我上传文件时,我只上传了一个文件!我尝试输出上传的内容,并为3个不同的文件获取此信息,其中一个是Koala.jpg代码>:Koala.jpg上传了!Koala.jpg上传了!Koala.jpg上传了!
这告诉我有3个文件被选中。你在哪里输出值?我的机器上运行了示例,代码在Chrome中按预期工作。同时查看调试器中的Request.files对象以查看其中包含的内容。这可能会给你一些提示一些关于代码失败位置的指针I'v尝试调试它。发现AllKeys
属性包含3个以input
标记id命名的文件,该标记id是testUpload
!为什么会发生这种情况?!foreach按名称在集合上迭代。在这种情况下,即使文件中有三项colleAction每个文件项的名称都是testUpload,因为所有三个文件都是从同一个名为testUpload的输入元素发布的。如果有三个不同名称的输入元素,则foreach循环会工作,因为文件名值会不同
for (int i = 0; i < Request.Files.Count; i++)
{
HttpPostedFileBase file = Request.Files[i];
if(file .ContentLength >0){
//saving code here
}