阅读量:124
ASP.NET Stream 是一个用于在服务器和客户端之间传输文件的功能。它允许你将文件作为流(连续的数据块)发送,而不是完整的文件一次性发送。这样可以减少内存占用,提高传输速度,特别是在处理大文件时非常有用。
以下是一个简单的示例,展示了如何使用 ASP.NET Stream 传输文件:
- 首先,在你的 ASP.NET 项目中创建一个名为
FileStream的方法,该方法接收一个文件路径作为参数,并返回一个FileStream对象:
public FileStream GetFileStream(string filePath)
{
// 确保文件存在
if (!File.Exists(filePath))
{
throw new FileNotFoundException("文件未找到", filePath);
}
// 返回文件流
return new FileStream(filePath, FileMode.Open, FileAccess.Read);
}
- 在你的 ASPX 页面中,添加一个按钮和一个下载链接,当用户点击按钮时,触发一个名为
DownloadFile的事件处理程序:
<asp:Button ID="btnDownload" runat="server" Text="下载文件" OnClick="DownloadFile" />
<asp:LinkButton ID="lnkDownload" runat="server" Text="下载文件" OnClick="DownloadFile" />
- 在你的代码后台(例如在你的 ASPX.CS 文件中),为按钮和链接按钮添加
DownloadFile事件处理程序:
protected void DownloadFile(object sender, EventArgs e)
{
// 获取要下载的文件路径
string filePath = "path/to/your/file.txt";
// 调用 GetFileStream 方法获取文件流
FileStream fileStream = GetFileStream(filePath);
// 设置响应头,以便浏览器知道这是一个下载请求
Response.Clear();
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment;filename=" + Path.GetFileName(filePath));
Response.AddHeader("Content-Length", fileStream.Length.ToString());
// 将文件流写入响应输出流
fileStream.CopyTo(Response.OutputStream);
// 关闭文件流和响应
fileStream.Close();
Response.End();
}
现在,当用户点击按钮或链接按钮时,服务器会将文件作为流发送给客户端,客户端可以开始下载文件。这种方式适用于大文件传输,因为它不会一次性将所有数据加载到内存中。