文件下载低内存,即使是大文件
本文关键字:文件 即使是 内存 文件下载 | 更新日期: 2023-09-27 18:03:40
我需要授予用户访问受限文件的权限。我们正在考虑使用一个通用的webhandler来处理这个操作。
文件可以变得相当大,至少1.5 gb。
我们需要用尽可能少的RAM/内存使用来提供这些文件。
目前我们认为这是解决方案:
request.ContentType = "text/plain";
request.ContentLength = byteArray.Length;
Stream dataStream = request.GetRequestStream();
int buffersize = 65536;
byte[] buffer = new byte[buffersize];
using (StreamReader reader = new StreamReader(filename))
{
int count = 0;
while (true)
{
int count = reader.Read(buffer, 0, buffersize);
dataStream.Write(buffer, 0, count);
if (count < buffersize) break;
}
}
这对我们有用吗?
有更好的解决方案吗?
我们需要注意什么?
直接通过IIS共享文件不是一个选项。处理程序需要控制谁可以访问,谁不能访问。
您需要使用HttpResponse.TransmitFile
方法。这不会在内存中缓冲文件,但您仍然可以获得所需的所有控件。