ASP.NET五步打包下載Zip文件

来源:http://www.cnblogs.com/tdws/archive/2016/11/17/6074809.html
-Advertisement-
Play Games

本文版權歸博客園和作者吳雙共同所有,轉載和爬蟲請註明原文地址:www.cnblogs.com/tdws 首先分享幾個振奮人心的新聞: 1.谷歌已經宣佈加入.NET基金會 2.微軟加入Linux基金會,繼續對Linux示好。換了CEO就是不一樣 3.微軟發佈VS For Mac! 第一步 下載dll ...


本文版權歸博客園和作者吳雙共同所有,轉載和爬蟲請註明原文地址:www.cnblogs.com/tdws

首先分享幾個振奮人心的新聞:

1.谷歌已經宣佈加入.NET基金會

2.微軟加入Linux基金會,繼續對Linux示好。換了CEO就是不一樣

3.微軟發佈VS For Mac!

第一步   下載dll

   在Nuget里安裝下麵這個dll

  

第二步   下載方法

  項目結構

  

   在我們的一般處理程式中加入如下方法

        ///<summary>
        /// 批量打包下載 Author:吳雙
        /// </summary>
        /// <param name="fileName">文件名稱</param>
        /// <param name="filePath">文件虛擬路徑</param>
        public static void DownLoadFiles(string fileName, string filePath)
        {
            List<string> fileNames = fileName.Split('|').ToList();
            List<string> filePaths = filePath.Split('|').ToList();
            MemoryStream ms = new MemoryStream();
            byte[] buffer = null;
            using (ZipFile file = ZipFile.Create(ms))
            {
                file.BeginUpdate();
                file.NameTransform = new MyNameTransfom();
                filePaths.ForEach(t =>
                {
                    file.Add(HttpContext.Current.Server.MapPath(t));
                });

                file.CommitUpdate();
                buffer = new byte[ms.Length];
                ms.Position = 0;
                ms.Read(buffer, 0, buffer.Length);
            }
            string ss = "批量下載" + fileNames[0] + "";
            HttpContext.Current.Response.AddHeader("content-disposition", "attachment;filename=" + ss + ".zip");
            HttpContext.Current.Response.BinaryWrite(buffer);
            HttpContext.Current.Response.Flush();
            HttpContext.Current.Response.End();
        }

 

第三步  調用方法

   試著下載我們Pic目錄下的文件吧!

       public void ProcessRequest(HttpContext context)
        {
            //context.Response.ContentType = "text/plain";
            //context.Response.Write("Hello World");
DownLoadFiles("xxx", "~/Pic/00.gif|~/Pic/02.png"); }

 

第四步   測試結果

   把項目跑起來吧!

  

  下麵是打包結果:

  

 

第五步   最後的淺談

   見過很多朋友和同事,他們不明白如何直接下載文件到瀏覽器。

   實際上我上一句話,就已經是錯誤的了。文件並沒有下載到瀏覽器中,而是隨著HTTP請求,你Request將參數等一系列信息,流入到下游伺服器。而你的HTTP伺服器,接收到請求後,經過處理,再向下游客戶端,返回一系列的Response結果。

  

    那麼你需要做的僅僅是將你的文件流讀到響應流當中,並且在瀏覽器得到你的頭部通知時,自然會給你當作文件下載。

  

       

    你的一切傳輸都歸功於HTTP協議,它基於TCP/IP協議族,在HTTP這個應用層下,為你做出了巨大貢獻的還有:傳輸層,網路層,和數據鏈路層。在傳輸層,有TCP為你提供安全可靠的傳輸支持,而所有的網路通信幾乎都需要網路層的IP協議,最後再到數據鏈路層一系列你可見的路由設備。

   

    

    如果我的點滴分享對你有點滴幫助,歡迎點擊下方紅色按鈕關註,我將持續分享更多有意義的。你下載成功了嗎?為你自己點贊!

 


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

-Advertisement-
Play Games
更多相關文章
  • 軟體列表軟體版本備註centos6.4 x86_6464位系統mysqlmysql5.5.49本機使用python2.7seafile 依賴pythonpip8.1.2安裝模塊使用python-imaging1.1.7python模塊mysql-python1.2.5python模塊 使用pip安裝... ...
  • 將相關命令寫下,留作參考 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 ...
  • 在上一篇文章中介紹了新手如何安裝Ubuntu14.04的雙系統,本文會說明Ubuntu系統下搜狗輸入法的安裝,並就我遇見的一些bug給出最簡單的解決辦法。 第一部分、搜狗輸入法的安裝 本身搜狗輸入法的安裝是非常簡單的,這裡只是就安裝過程中會出現的問題提供解決方案。 首先,下載linux下64位搜狗輸 ...
  • 01 Linux環境準備 (本文在win10上使用 VMware12 + Ubuntu14.04) 步驟: 步驟: 1、JDK安裝及相關配置 2、Tomcat安裝及相關配置 2、Tomcat安裝及相關配置 3、Mysql安裝及相關配置 3、Mysql安裝及相關配置 詳細步驟: 詳細步驟: 1、JDK ...
  • ASP.NET Core 1.1 Preview 1於2016年10月25日發佈。這個版本包括許多偉大的新功能以及許多錯誤修複和一般的增強。 要將現有項目更新到ASP.NET Core 1.1 Preview 1,您需要執行以下操作: 1. 下載並安裝更新的.NET Core 1.1 Prevew ... ...
  • 使用了第三方的JS庫或框架,在VS中編寫JS代碼,發現真是個悲劇,完全只能手打,智能感知沒了,這不符合VS的一貫做風只要在寫代碼的JS文件加上以下代碼,就可以有智能感知了 說明:path內為使用的第三方JS庫或框架的js文件,如果文件沒有和在編碼的JS在同一目錄下,則要補全路徑 ...
  • 問題 怎樣用在 Web API 中創建 OData 服務。 解決方案 對於我們來說,在 Web API 中使用 OData最簡單的方式就是使用 ASP.NET 模板來創建Odata Controller。在 Controllers 文件夾上滑鼠右鍵->添加->新建項。 顯示一個如圖 12-1 的對話 ...
  • 今天去深圳溜達了一天,剛回來,看到首頁都是微軟大法好,看來離.NET的春天就差3個月了~~回到正題,這篇的教程講解下拉配置,詳情如下:... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...