即使有大文件,内存也很少

时间:2013-03-12 08:45:59

标签: c# asp.net filestream generic-handler

我需要授予用户访问受限文件的权限。我们正在考虑使用通用的webhandler进行此操作。

文件可以变得非常大,至少1,5GB。

我们需要尽可能少地使用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共享文件。处理程序需要控制谁可以访问,谁不能访问。

1 个答案:

答案 0 :(得分:4)

您需要使用HttpResponse.TransmitFile方法。这不会将文件缓冲在内存中,但您仍然可以获得所需的所有控件。