“System.OutOfMemoryException”在上传大文件时被抛出
本文关键字:文件 OutOfMemoryException System | 更新日期: 2023-09-27 18:35:14
上传大于 500 MB 的文件时出现以下错误
"抛出类型为'System.OutOfMemoryException'的异常。
我的代码如下所示:
public readonly string Filename, ContentType;
public readonly int Size;
public readonly byte[] Bytes;
public FileHolder(HttpPostedFile file)
{
Filename = Path.GetFileName(file.FileName);
ContentType = GetContentType(file.ContentType, Filename);
Size = file.ContentLength;
Bytes = new byte[file.InputStream.Length]; //Here i get error
file.InputStream.Read(Bytes, 0, Size);
}
不要尝试一次读取整个流。无论如何,您不会一次获得整个流。
创建一个大小合理的缓冲区,然后一次读取一个块:
byte[] buffer = new byte[8192];
int offset = 0;
int left = Size;
while (left > 0) {
int len = file.InputStream.Read(buffer, 0, Math.Min(buffer.Length, left));
left -= len;
// here you should store the first "len" bytes of the buffer
offset += len;
}
不应将整个文件加载到字节数组中。相反,您可以直接从输入流处理文件。