我在下面有一个扩展方法,但是当我运行它时,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 说:
客户端对文件进行编码并使用多部分 MIME 格式在内容正文中传输它们,HTTP Content-Type 标头为 multipart/form-data。ASP.NET 将编码文件从内容主体中提取到 HttpFileCollection 的各个成员中。HttpPostedFile 类的方法和属性提供对每个文件的内容和属性的访问。