文件下载低内存,即使是大文件

本文关键字:文件 即使是 内存 文件下载 | 更新日期: 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方法。这不会在内存中缓冲文件,但您仍然可以获得所需的所有控件。