我想将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.
任何解决方案
实际上你可以使用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
。
类似的问题: