如何将 FileStream 的上下文写入我的 ASP.net HTTP 响应?

Dan*_*don 1 asp.net download filestream

假设我希望我的 ASP.net Web 服务器打开一个文件,然后将它发送到浏览器。

首先,我写这个:

FileInfo file = new System.IO.FileInfo(@"\\myshare\myfile.zip");
FileStream fileStream = file.Open(FileMode.Open, FileAccess.Read, FileShare.Read);
Run Code Online (Sandbox Code Playgroud)

接下来是什么?

我会想一些类似的东西Response.Write(...,但我很难弄清楚。

Dav*_*ras 5

直接来自 MSDN:

HttpResponse.BinaryWrite 方法

 FileStream MyFileStream;
 long FileSize;

 MyFileStream = new FileStream("sometext.txt", FileMode.Open);
 FileSize = MyFileStream.Length;

 byte[] Buffer = new byte[(int)FileSize];
 MyFileStream.Read(Buffer, 0, (int)FileSize);
 MyFileStream.Close();

 Response.Write("<b>File Contents: </b>");
 Response.BinaryWrite(Buffer);
Run Code Online (Sandbox Code Playgroud)

编辑:当然还有许多其他方法,例如流式传输,它允许您永远不会在 Web 服务器上一次分配 byte[] 缓冲区。这只是一个起点……