我想将httppostedfilebase类型转换为byte []类型。 我使用这段代码:
private static byte[] ConverToBytes(HttpPostedFileBase file)
{
int fileSizeInBytes = file.ContentLength; //134675091 (129MB)
MemoryStream target = new MemoryStream();
file.InputStream.CopyTo(target);//System.OutOfMemoryException
byte[] data = target.ToArray();
return data;
}
当我使用此代码时,我得到System.OutOfMemoryException.
任何关于它的灵魂事件
答案 0 :(得分:0)
实际上,您可以使用MemoryStream
创建多个字节流副本,这就是抛出OutOfMemoryException
的原因。请改用BinaryReader
:
private static byte[] ConvertToBytes(HttpPostedFileBase file)
{
int fileSizeInBytes = file.ContentLength;
byte[] data = null;
using (var br = new BinaryReader(file.InputStream))
{
data = br.ReadBytes(fileSizeInBytes);
}
return data;
}
注意:我强烈建议using
语句包装所有使用内存空间的实例创建,并实现像IDisposable
这样的MemoryStream
。
类似问题: