我在下面有一个扩展方法,但是当我运行它时,foreach给我InvalidCastException并说*


  无法转换类型的对象
  键入“ System.String”
  'System.Web.HttpPostedFile'。


代码:

public static List<Attachment> GetFiles(this HttpFileCollection collection) {
            if (collection.Count > 0) {
                List<Attachment> items = new List<Attachment>();
                foreach (HttpPostedFile _file in collection) {
                    if (_file.ContentLength > 0)
                        items.Add(new Attachment()
                        {
                            ContentType = _file.ContentType,
                            Name = _file.FileName.LastIndexOf('\\') > 0 ? _file.FileName.Substring(_file.FileName.LastIndexOf('\\') + 1) : _file.FileName,
                            Size = _file.ContentLength / 1024,
                            FileContent = new Binary(new BinaryReader(_file.InputStream).ReadBytes((int)_file.InputStream.Length))
                        });

                    else
                        continue;
                }
                return items;
            } else
                return null;
        }


提前致谢。

MSDN说:


  客户端对文件进行编码并传输
  在内容主体中使用多部分
  带有HTTP Content-Type的MIME格式
  multipart / form-data的标头。 ASP.NET
  从中提取编码文件
  内容主体成为个人成员
  一个HttpFileCollection。方法和
  HttpPostedFile类的属性
  提供对内容的访问权限,以及
  每个文件的属性。

最佳答案

如果您查看此页面上的代码示例,它显示了应如何枚举集合,实际上,当您尝试按原样枚举时实际上会得到一个字符串。

http://msdn.microsoft.com/en-us/library/system.web.httpfilecollection.aspx

10-07 23:17