在ASP.NET中实现文件下载可以通过提供文件数据的URL并将其传递到客户端浏览器来完成。以下是实现代码的完整攻略:
第一步:创建ASPX页面
创建一个ASPX页面并将其用于提供文件下载。 在代码前面添加<%@ Page
指令,这样HTML的渲染会被禁用,仅下载文件的处理。
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="DownloadFile.aspx.cs" Inherits="WebApplication1.DownloadFile" %>
第二步:创建代码以下载文件
在下载文件的页面中,使用以下代码:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string filePath = Server.MapPath("~/Files/DownloadSample.docx");
FileInfo fileInfo = new FileInfo(filePath);
Response.Clear();
Response.ClearHeaders();
Response.ContentType = "application/octet-stream";
Response.AppendHeader("content-disposition", "attachment; filename=" + fileInfo.Name);
Response.TransmitFile(fileInfo.FullName);
Response.End();
}
}
以上代码会从服务器上获取文件资源,并将其传递到客户端的浏览器中以供下载。该代码会添加如下HTTP头:
Content-Type: application/octet-stream
Content-Disposition: attachment; filename=DownloadSample.docx
这将告诉浏览器以二进制形式传输文件,并且会提示用户将其下载。
第三步:添加另一个示例
在此示例中,我们将使用FileStream
类以编程方式提供文件下载。以下是代码:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string filePath = Server.MapPath("~/Files/DownloadSample.docx");
FileInfo fileInfo = new FileInfo(filePath);
FileStream fileStream = new FileStream(fileInfo.FullName, FileMode.Open);
byte[] bytes = new byte[(int)fileStream.Length];
fileStream.Read(bytes, 0, (int)fileStream.Length);
fileStream.Close();
Response.Clear();
Response.ClearHeaders();
Response.ContentType = "application/octet-stream";
Response.AppendHeader("content-disposition", "attachment; filename=" + fileInfo.Name);
Response.BinaryWrite(bytes);
Response.End();
}
}
这段代码会在服务器上打开文件,并将其作为一个字节数组发送到客户端的浏览器中。浏览器可以将其保存为文件,或者直接在浏览器中打开。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:在ASP.NET中下载文件的实现代码 - Python技术站