代码之家  ›  专栏  ›  技术社区  ›  Lalman

ASP.NET-流式传输到客户端的文件是否占用服务器内存?

  •  0
  • Lalman  · 技术社区  · 11 年前

    我需要让文件服务器中的文件可以通过运行在web服务器上的应用程序下载。用户将点击应用程序页面上可用的链接,然后会出现另存为对话框。这种用例很常见,我可能在谈论一件基本的事情,但如果有人能确认我的以下假设是否正确,我将不胜感激。

    1) 使用文件服务器上的文件,通过web服务器中的虚拟目录进行虚拟映射,以便应用程序可以访问(作为链接),可以使用内容处理将其直接流式传输到客户端(代码与答案类似 here ),意味着不涉及任何代码来处理或组块文件以进行流式传输。

    2) 由于文件是直接从文件服务器流式传输的,因此web服务器在内存或磁盘使用方面不会受到任何影响(当然会使用CPU)。

    谢谢

    1 回复  |  直到 7 年前
        1
  •  2
  •   nunespascal    11 年前

    由于您想直接写入文件并将内存占用降至最低,请考虑使用 HttpResponse.TransmitFile

    将指定的文件直接写入HTTP响应输出流, 而不将其缓冲在存储器中。

    据我所知,如果你必须通过asp.net编写文件,这是在响应中发送文件的最有效方法。

    Response.AppendHeader("Content-Disposition", "attachment; filename="+ fileName );
    Response.TransmitFile(fullPath);
    Response.Flush();
    Response.End();