ホームページ  >  記事  >  バックエンド開発  >  Asp.netはファイルダウンロード機能を実装

Asp.netはファイルダウンロード機能を実装

巴扎黑
巴扎黑オリジナル
2017-08-15 13:45:442176ブラウズ

この記事では主に、ファイルのダウンロード機能を実装するための Asp.net の一般的な処理プログラムの使用方法を紹介します。これは非常に優れており、必要な友人は参照できます。

最初に HTML ページがあり、そこにリンクがあります。ページのリンクをクリックしてファイルをダウンロード/保存します (Thunder のダウンロード リンクと同様)


<!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的机制不允许访问App_Data文件夹资源,所以会报“请求筛选模块被配置为拒绝包含 hiddenSegment 节的 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;
   }
  }
 }
}

最初のリンクをクリックして、表示は次のとおりです:

2番目のリンクをクリックしてアクセスし、ファイル:

以前に一度テストしたことがあるので、今回ダウンロードするときにreadme(1).txtという名前を付けました

以上がAsp.netはファイルダウンロード機能を実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。