我需要让文件服务器中的文件可以通过运行在web服务器上的应用程序下载。用户将点击应用程序页面上可用的链接,然后会出现另存为对话框。这种用例很常见,我可能在谈论一件基本的事情,但如果有人能确认我的以下假设是否正确,我将不胜感激。
1) 使用文件服务器上的文件,通过web服务器中的虚拟目录进行虚拟映射,以便应用程序可以访问(作为链接),可以使用内容处理将其直接流式传输到客户端(代码与答案类似 here ),意味着不涉及任何代码来处理或组块文件以进行流式传输。
2) 由于文件是直接从文件服务器流式传输的,因此web服务器在内存或磁盘使用方面不会受到任何影响(当然会使用CPU)。
谢谢
由于您想直接写入文件并将内存占用降至最低,请考虑使用 HttpResponse.TransmitFile
HttpResponse.TransmitFile
将指定的文件直接写入HTTP响应输出流, 而不将其缓冲在存储器中。
据我所知,如果你必须通过asp.net编写文件,这是在响应中发送文件的最有效方法。
Response.AppendHeader("Content-Disposition", "attachment; filename="+ fileName ); Response.TransmitFile(fullPath); Response.Flush(); Response.End();