Asp.net利用一般處理程序?qū)崿F(xiàn)文件下載功能
首先有一個(gè)html頁面,頁面有一個(gè)鏈接,點(diǎn)擊鏈接彈出文件下載/保存(類似迅雷下載鏈接)
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>文件下載</title> <meta charset="utf-8" /> </head> <body> <!--該方式不行,1:如果訪問的是類似文本等瀏覽器可以處理的文件,則是瀏覽器打開顯示的方式,并不是文件下載;2:如果訪問的是App_Data文件夾里的文件,由于.net的機(jī)制不允許訪問App_Data文件夾資源,所以會(huì)報(bào)“請(qǐng)求篩選模塊被配置為拒絕包含 hiddenSegment 節(jié)的 URL 中的路徑。”--> <a href="App_Data/readme.txt" rel="external nofollow" >下載readme.txt文件</a> <br /> <a href="DownloadFileHandler.ashx" rel="external nofollow" >下載readme.txt文件</a> </body> </html>
一般處理程序的代碼如下
using System.IO;
using System.Web;
namespace Zhong.Web
{
/// <summary>
/// DownloadFileHandler 的摘要說明
/// </summary>
public class DownloadFileHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
string filePath = context.Server.MapPath("~/App_Data/readme.txt");
FileStream fs = new FileStream(filePath, FileMode.Open);
byte[] bytes = new byte[fs.Length];
fs.Read(bytes, 0, bytes.Length);
fs.Dispose();
context.Response.ContentType = "application/octet-stream";
context.Response.AddHeader("Content-Disposition", "attachment; filename=readme.txt");
context.Response.BinaryWrite(bytes);
context.Response.Flush();
//大文件下載的解決方案
//context.Response.ContentType = "application/x-zip-compressed";
//context.Response.AddHeader("Content-Disposition", "attachment;filename=z.zip");
//string filename = Server.MapPath("~/App_Data/move.zip");
//context.Response.TransmitFile(filename);
}
public bool IsReusable
{
get
{
return false;
}
}
}
}
點(diǎn)擊第一個(gè)鏈接訪問,顯示如下:

點(diǎn)擊第二個(gè)鏈接訪問,下載文件:

由于我之前已經(jīng)測試過一次,所以這次下載時(shí)命名為readme(1).txt
相關(guān)文章
在 .NET 中 使用 ANTLR4構(gòu)建語法分析器的方法
本文將介紹如何在 .NET 中使用 ANTLR4 構(gòu)建語法分析器,本文不會(huì)深入講解 ANTLR4 的語法規(guī)則,相關(guān)內(nèi)容可參考 ANTLR4 的官方文檔或其他資料,本文將涵蓋以下內(nèi)容:ANTLR4 的開發(fā)環(huán)境搭建、語法規(guī)則編寫、語法分析器生成以及語法分析器的使用,感興趣的朋友一起看看吧2025-04-04
.NET?ORM框架SqlSugar實(shí)現(xiàn)導(dǎo)航查詢功能
今天這篇文章分享一款好用簡單的ORM框架?SqlSugar,相比?EF?Core的導(dǎo)航查詢更加簡單,配置更加容易,幾分鐘就能上手,對(duì).NET?ORM框架SqlSugar實(shí)現(xiàn)導(dǎo)航查詢功能感興趣的朋友一起看看吧2022-04-04
.NET的Ajax請(qǐng)求數(shù)據(jù)提交實(shí)例
這篇文章主要介紹了.NET的Ajax請(qǐng)求數(shù)據(jù)提交實(shí)例,較為詳細(xì)的分析了Ajax請(qǐng)求、數(shù)據(jù)的提交以及參數(shù)的傳遞技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-01-01
教你使用.NET快速比較兩個(gè)byte數(shù)組是否相等
在.NET中如何快速的比較兩個(gè)byte數(shù)組是否完全相等,聽起來是一個(gè)比較兩個(gè)byte數(shù)組是完全相等是一個(gè)簡單的問題,但是深入研究以后,覺得還是有很多方案的,這里和大家一起分享下2022-04-04
asp.net中獲取遠(yuǎn)程網(wǎng)頁的內(nèi)容之一(downmoon原創(chuàng))
asp.net中獲取遠(yuǎn)程網(wǎng)頁的內(nèi)容之一(downmoon原創(chuàng))...2007-04-04
ASP.NET設(shè)計(jì)網(wǎng)絡(luò)硬盤之上傳文件實(shí)現(xiàn)代碼
用戶最終是要和文件打交道的,文件夾僅僅是用來方便管理的。文件的上傳和下載也就成為“網(wǎng)絡(luò)硬盤”功能設(shè)計(jì)中的重要一環(huán)2012-10-10
關(guān)于.NET Attribute在數(shù)據(jù)校驗(yàn)中的應(yīng)用教程
這篇文章主要給大家介紹了關(guān)于.NET Attribute在數(shù)據(jù)校驗(yàn)中的應(yīng)用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用.NET具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05

