[開源]快速構建文件下載,支持文件加密,自定義限速

来源:https://www.cnblogs.com/MeetYan/archive/2019/04/05/10658762.html
-Advertisement-
Play Games

項目說明 1. 目前支持WebForm文件下載,後續支持Mvc 2. 支持下載文件加密以及下載限速 3. 項目源碼: "MasterChief.DotNet.Framework.Download" 4. Nuget:Install Package MasterChief.DotNet.Framewo ...


項目說明

  1. 目前支持WebForm文件下載,後續支持Mvc
  2. 支持下載文件加密以及下載限速
  3. 項目源碼:MasterChief.DotNet.Framework.Download
  4. Nuget:Install-Package MasterChief.DotNet.Framework.Download
  5. 歡迎PR,歡迎Star;

如何使用

  1. 通過MasterChief.DotNet.Core.Config構建下載配置文件

    <?xml version="1.0" encoding="utf-16"?>
    <DownloadConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                    FileNameEncryptorIv="0102030405060708090a0a0c0d010208"
                    FileNameEncryptorKey="DotnetDownloadConfig"
                    LimitDownloadSpeedKb="1024"
                    DownLoadMainDirectory="D:\OneDrive\軟體\工具\">
    </DownloadConfig>
  2. 在WebForm下新建一般處理程式,並實現DownloadHandler抽象類

    /// <summary>
    ///     FileDownloadHandler 的摘要說明
    /// </summary>
    public class FileDownloadHandler : DownloadHandler, IHttpHandler
    {
        public void ProcessRequest(HttpContext context)
        {
            var fileName = context.Request["fileName"];
            StartDownloading(context, fileName);
        }
    
        public bool IsReusable => false;
    
        public override void OnDownloadFailed(HttpContext context, string fileName, string filePath, string ex)
        {
            context.Response.Write(ex);
        }
    
        public override void OnDownloadSucceed(HttpContext context, string fileName, string filePath)
        {
            var result = $"文件[{fileName}]下載成功,映射路徑:{filePath}";
            context.Response.Write(result);
        }
    }
  3. 在WebForm下載文件加密顯示

    protected void Page_Load(object sender, EventArgs e)
    {
        string url = DownloadFileContext.Instance.EncryptFileName("typora-setup-x64.exe");
        link.NavigateUrl = "~/FileDownloadHandler.ashx?fileName=" + url;
    }
  4. 運行效果


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 矩陣快速冪 設答案為f(i) 舉個例子: 當i==2時,包含0的值有:10,20,30,40,50,60,70,80,90,100;0的個數為11,f(2)=11; i==3時;可以從i==2的情況遞推, 第一步:i==2時的數據範圍:1-100;在這100個數後面補0;補0後,這些數在1-1000 ...
  • 一、可變與不可變類型 二、數字類型 1、用途 2、定義方式 3、總結 三、字元串類型 1、作用 2、定義方式 3、常用操作+內置方法 # 優先掌握的操作: 4、總結 四、列表類型 1、用途 2、定義方式 3、常用操作+內置的方法 4、總結 ...
  • libmxml是一個開源、小巧的C語言xml庫。這裡簡單分析一下它是用什麼樣的數據結構來保存分析過的xml文檔。 mxml關鍵的結構體mxml_node_t是這樣的實現的: 它使用左孩子右兄弟的樹形結構來描述xml報文:即下層節點登記在child鏈表,兄弟節點登記在next鏈表。 如果某個節點下麵有 ...
  • 格式:\033[顯示方式;前景色;背景色m + 結尾部分:\033[0m ...
  • 轉自博客:https://www.cnblogs.com/CreateMyself/p/9235968.html 前言 最近發表的EF Core貌似有點多,可別誤以為我只專攻EF Core哦,私下有時間也是一直在看ASP.NET Core的內容,所以後續會穿插講EF Core和ASP.NET Cor ...
  • 本文使用xUnit對ASP.NET Core WebAPI做單元測試,使用HttpClient的同步和非同步請求,下麵詳細介紹xUnit的使用過程: 一、創建示例項目 模板為我們自動創建了一個ValuesController控制器,保留裡面的一個Get請求和Post請求方法,代碼如下: 使用.NET ...
  • 中介者模式簡介 提供一個中介對象出來,用於封裝一系列對象的交互,從而使各對象不需要直接交互,進一步降低了對象間的耦合度。這是一種行為型設計模式。 由此可見,中介者模式主要解決的是對象間所存在的大量關係,我們都知道,對象間一旦關聯緊密,必然會導致系統的複雜性增加,一旦某個對象有所修改,其關聯對象也有可 ...
  • 如果您的孩子不適應編譯型語言怎麼辦? 如果您的孩子貪玩不想花多時間在編程上怎麼辦? 如果您還沒有孩子怎麼辦? 如果您夜晚兼職覺不夠睡又怎麼辦? 不妨試試 “ 拍 簧 片 ”。 媽了巴子的有點麻煩,但別怕,接下來我將用一把梭帶你把這個“場子“搭起來: 使用VSCode搭建“拍簧片”環境: 1、裝VsC ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...