婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > ASP.NET Web Api 2實現多文件打包并下載文件的實例

ASP.NET Web Api 2實現多文件打包并下載文件的實例

熱門標簽:蘇州如何辦理400電話 400電話辦理怎么樣 臨沂智能電話機器人加盟 地圖標注軟件免費下載 聯通官網400電話辦理 網絡電話外呼系統上海 百應電話機器人外呼系統 外呼電話機器人成本 西寧呼叫中心外呼系統線路商

最近由于工作和個人事務,站點也好久沒更新了,但這并不影響我對.NET的熱情。站點的更新工作還是得想辦法抽時間來完成的。

今天利用中午的時間來寫一篇關于Asp.Net Web Api下載文件的文章,之前我也寫過類似的文章,請見:《ASP.NET(C#) Web Api通過文件流下載文件的實例》

本文以這篇文章的基礎,提供了ByteArrayContent的下載以及在下載多個文件時實現在服務器對多文件進行壓縮打包后下載的功能。

關于本文中實現的在服務器端用.NET壓縮打包文件功能的過程中,使用到了一個第方類庫:DotNetZip,具體的使用將在正文中涉及。好了,描述了這么多前言,下面我們進入本文示例的正文。

1.首先創建名為:WebApiDownload的Web Api 項目(C#);

2.接著新建一個空的控制器,命名為:DownloadController;

3.創建一些打包文件和存放臨時文件的文件夾(downloads),具體請看本文最后提供的示例項目代碼

4.打開NuGet程序包管事器,搜索DotNetZip,如下圖:

搜索到DotNetZip安裝包后,進行安裝,以便用于本項目將要實現多文件打包壓縮的功能,如下圖:

安裝完成DotNetZip包后,我們就可以退出NuGet程序包管理器了,因為本項目為示例項目,不需再添加其他的包。

5.在Models文件夾下創建一個示例數據的類,名為:DemoData,其中的成員和實現如下:

using System.Collections.Generic;


namespace WebApiDownload.Models
{
 public class DemoData
 {
  public static readonly ListListstring>> Contacts = new ListListstring>>();
  public static readonly Liststring> File1 = new Liststring>
  {
   "f_1_test_1@example.com",
   "f_1_test_2@example.com",
   "f_1_test_3@example.com",
   "f_1_test_4@example.com",
   "f_1_test_5@example.com"
  };
  public static readonly Liststring> File2 = new Liststring>
  {
   "f_2_test_1@example.com",
   "f_2_test_2@example.com",
   "f_2_test_3@example.com",
   "f_2_test_4@example.com",
   "f_2_test_5@example.com"
  };
  public static readonly Liststring> File3 = new Liststring>
  {
   "f_3_test_1@example.com",
   "f_3_test_2@example.com",
   "f_3_test_3@example.com",
   "f_3_test_4@example.com",
   "f_3_test_5@example.com"
  };

  public static ListListstring>> GetMultiple
  {
   get
   {
    if (Contacts.Count = 0)
    {
     Contacts.Add(File1);
     Contacts.Add(File2);
     Contacts.Add(File3);
    }
    return Contacts;
   }
  }
 }
}

6.到這里,我們的準備工作基本做得差不多了,最后我們只需要在DownloadController控制器中實現兩個Action,一個為:DownloadSingle(提供下載單個文件的功能),另一個為:DownloadZip(提供打包壓縮多個文件并下載的功能)。具體的DownloadController完整代碼如下:

using System.Linq;
using System.Net.Http;
using System.Text;
using System.Web.Http;
using Ionic.Zip;
using WebApiDownload.Models;
using System;
using System.IO;
using System.Net;
using System.Net.Http.Headers;
using System.Threading;
using System.Web;


namespace WebApiDownload.Controllers
{
 [RoutePrefix("download")]
 public class DownloadController : ApiController
 {
  [HttpGet, Route("single")]
  public HttpResponseMessage DownloadSingle()
  {
   var response = new HttpResponseMessage();
   //從List集合中獲取byte[]
   var bytes = DemoData.File1.Select(x => x + "\n").SelectMany(x => Encoding.UTF8.GetBytes(x)).ToArray();
   try
   {
    var fileName = string.Format("download_single_{0}.txt", DateTime.Now.ToString("yyyyMMddHHmmss"));
    var content = new ByteArrayContent(bytes);
    response.Content = content;
    response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
    {
     FileName = fileName
    };
    response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
   }
   catch (Exception ex)
   {
    response.StatusCode = HttpStatusCode.InternalServerError;
    response.Content = new StringContent(ex.ToString());
   }
   return response;
  }
  [HttpGet, Route("zip")]
  public HttpResponseMessage DownloadZip()
  {
   var response = new HttpResponseMessage();
   try
   {
    var zipFileName = string.Format("download_compressed_{0}.zip", DateTime.Now.ToString("yyyyMMddHHmmss"));
    var downloadDir = HttpContext.Current.Server.MapPath($"~/downloads/download");
    var archive = $"{downloadDir}/{zipFileName}";
    var temp = HttpContext.Current.Server.MapPath("~/downloads/temp");

    // 清空臨時文件夾中的所有臨時文件
    Directory.EnumerateFiles(temp).ToList().ForEach(File.Delete);
    ClearDownloadDirectory(downloadDir);
    // 生成新的臨時文件
    var counter = 1;
    foreach (var c in DemoData.GetMultiple)
    {
     var fileName = string.Format("each_file_{0}_{1}.txt", counter, DateTime.Now.ToString("yyyyMMddHHmmss"));
     if (c.Count = 0)
     {
      continue;
     }
     var docPath = string.Format("{0}/{1}", temp, fileName);
     File.WriteAllLines(docPath, c, Encoding.UTF8);
     counter++;
    }
    Thread.Sleep(500);
    using (var zip = new ZipFile())
    {
     // Make zip file
     zip.AddDirectory(temp);
     zip.Save(archive);
    }
    response.Content = new StreamContent(new FileStream(archive, FileMode.Open, FileAccess.Read));
    response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = zipFileName };
    response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
   }
   catch (Exception ex)
   {
    response.StatusCode = HttpStatusCode.InternalServerError;
    response.Content = new StringContent(ex.ToString());
   }
   return response;
  }

  private void ClearDownloadDirectory(string directory)
  {
   var files = Directory.GetFiles(directory);
   foreach (var file in files)
   {
    try
    {
     File.Delete(file);
    }
    catch
    {
    }
   }
  }
 }
}

到此,本示例的實現代碼部分就完成了,如果我們此時打開地址:http://localhost:63161/download/single,瀏覽器會彈出保存文件的提示窗口,如下:

保存此文件后,打開它我們會看到我們的示例數據已被保存到本地了,如下:

同樣的,下載壓縮文件你只需要訪問地址:localhost:63161/download/zip 即可,筆者就不再演示了。

最后,附上本示例項目的完整源代碼,點擊這里下載。

以上就是本文的全部內容,希望能給大家一個參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • 創建一個完整的ASP.NET Web API項目
  • ASP.NET中Web API的簡單實例
  • ASP.NET MVC Web API HttpClient簡介
  • 支持Ajax跨域訪問ASP.NET Web Api 2(Cors)的示例教程
  • ASP.NET Web API教程 創建Admin視圖詳細介紹
  • ASP.NET Web API如何將注釋自動生成幫助文檔
  • ASP.NET Web API教程 創建Admin控制器實例分享
  • ASP.NET Web API教程 創建域模型的方法詳細介紹
  • .Net Web Api中利用FluentValidate進行參數驗證的方法

標簽:中衛 清遠 聊城 慶陽 海西 甘肅 平涼 臨夏

巨人網絡通訊聲明:本文標題《ASP.NET Web Api 2實現多文件打包并下載文件的實例》,本文關鍵詞  ASP.NET,Web,Api,實現,多,文件,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《ASP.NET Web Api 2實現多文件打包并下載文件的實例》相關的同類信息!
  • 本頁收集關于ASP.NET Web Api 2實現多文件打包并下載文件的實例的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    精品88久久久久88久久久| 国产很黄免费观看久久| 日韩亚洲电影在线| 日本韩国欧美国产| 国产一区久久久| 在线日韩av片| 99视频在线精品| 日本色综合中文字幕| 久久众筹精品私拍模特| 99精品视频在线免费观看| 一区二区三区四区五区视频在线观看| 欧美在线一区二区三区| eeuss鲁片一区二区三区在线观看| 一级日本不卡的影视| 一区二区三区国产精品| 亚洲激情自拍视频| 亚洲精品国产a久久久久久 | 久久影视一区二区| 国产激情精品久久久第一区二区| 国产精品成人一区二区艾草| 136国产福利精品导航| 欧美精品第1页| 日韩电影在线一区| 97久久超碰精品国产| 高清视频一区二区| 国产成人精品亚洲午夜麻豆| 韩国视频一区二区| 中文字幕在线观看一区二区| 精品制服美女丁香| 精品系列免费在线观看| 最新日韩av在线| av综合在线播放| 国产ts人妖一区二区| 国产盗摄精品一区二区三区在线| 蜜臀av性久久久久蜜臀aⅴ | 精品国产乱码久久久久久图片| 欧美在线观看视频一区二区三区| 亚洲日本韩国一区| 精品av久久707| eeuss国产一区二区三区| 99久精品国产| 成人av电影在线网| 不卡在线观看av| 日本一区免费视频| 久久99精品久久久久久| 久久久久99精品一区| 成人午夜免费av| 日韩电影一二三区| 色综合天天性综合| 欧美成人乱码一区二区三区| 亚洲欧洲成人av每日更新| 亚洲韩国一区二区三区| 亚洲成人高清在线| 久热成人在线视频| 日本不卡一区二区三区| 亚洲欧洲制服丝袜| 欧美日韩成人综合| jlzzjlzz亚洲日本少妇| 国产精品高潮呻吟| 欧美在线观看视频一区二区| 国产婷婷一区二区| 久久精品免费看| 欧美日韩精品欧美日韩精品一综合| 国产偷v国产偷v亚洲高清| 亚洲色图清纯唯美| 欧美一区二区精品久久911| 久久久久久久综合色一本| 日韩制服丝袜av| 国产成人午夜视频| 91丨porny丨蝌蚪视频| 99久久精品免费看| 成人丝袜视频网| 国产精品国产三级国产专播品爱网| 专区另类欧美日韩| 亚洲国产高清aⅴ视频| 国产欧美日韩不卡免费| 色综合久久久久综合| 国产精品乱人伦一区二区| 国产毛片精品视频| 日韩欧美国产一区在线观看| 国产欧美日本一区视频| 日韩中文字幕一区二区三区| 亚洲成人动漫在线观看| 久久99久久99精品免视看婷婷| 91视视频在线观看入口直接观看www | 欧日韩精品视频| 日韩精品一区二区三区视频在线观看| 在线观看av一区二区| 色欧美片视频在线观看| 国产成人a级片| 久久亚洲影视婷婷| 国产伦精品一区二区三区免费迷| 91成人在线精品| 成人免费毛片高清视频| 欧美高清在线一区二区| 国产精品18久久久久久久久久久久| 欧美亚洲尤物久久| 91在线视频观看| 欧美影视一区在线| 亚洲综合一二三区| 色美美综合视频| 一级做a爱片久久| 91黄色小视频| 中文字幕一区二区在线播放| 欧美在线短视频| 日韩三级精品电影久久久| 色欲综合视频天天天| 亚洲大片免费看| 欧美一区二区久久| 国产麻豆精品久久一二三| 成人美女视频在线看| 国产一区二区美女| 国产精品久久久久久久久图文区| 理论电影国产精品| 中文在线资源观看网站视频免费不卡| 成人午夜又粗又硬又大| 亚洲三级免费电影| 97se亚洲国产综合自在线不卡| 精品国产一区二区在线观看| 日本成人在线网站| 国产精品一区二区在线观看不卡| 国产精品女主播av| 成人丝袜视频网| 91小视频免费观看| av成人免费在线观看| 一区二区三国产精华液| 日韩免费视频一区二区| 成人综合婷婷国产精品久久免费| 色综合久久天天综合网| 国产精品毛片无遮挡高清| 五月天欧美精品| 91精品欧美久久久久久动漫| 7777精品伊人久久久大香线蕉完整版 | 北条麻妃一区二区三区| 91成人免费电影| 欧美精品v日韩精品v韩国精品v| 6080午夜不卡| 国产一区二区三区免费播放| 欧美色综合网站| 青青草原综合久久大伊人精品优势| 97久久精品人人做人人爽| 久久久久久久久久久99999| 91一区二区三区在线观看| 亚洲精品免费看| 日韩一区二区在线观看| 成人黄页毛片网站| 日产国产高清一区二区三区| 久久麻豆一区二区| 欧美中文字幕亚洲一区二区va在线| 色域天天综合网| 欧美区视频在线观看| 日韩制服丝袜av| 最新国产精品久久精品| 欧美日韩中文一区| 国产一区免费电影| 悠悠色在线精品| 精品不卡在线视频| 欧美午夜片在线观看| 激情偷乱视频一区二区三区| 欧美午夜精品久久久| 中文字幕一区二区5566日韩| 亚洲欧美日韩中文字幕一区二区三区 | 国产亚洲一区二区在线观看| 91丝袜国产在线播放| 久久精品国产第一区二区三区| 国产女同性恋一区二区| 欧美高清视频一二三区| 亚洲一卡二卡三卡四卡无卡久久| a级精品国产片在线观看| 91精品国产高清一区二区三区 | 亚洲欧美一区二区三区国产精品| 国产高清成人在线| 日韩欧美的一区二区| 欧美成人女星排名| 91亚洲精品乱码久久久久久蜜桃| 美女视频网站黄色亚洲| 亚洲综合男人的天堂| 国产精品无人区| 精品美女一区二区| 欧美久久久影院| 欧美日韩一区二区三区在线看| 91在线porny国产在线看| 成人晚上爱看视频| 日本伊人色综合网| 视频一区免费在线观看| 91免费看视频| 5566中文字幕一区二区电影| 色综合色综合色综合| 激情都市一区二区| 色婷婷久久久综合中文字幕| 成人免费毛片片v| 欧美三级电影网站| 欧美体内she精高潮| 欧美电影免费提供在线观看| 678五月天丁香亚洲综合网| 日韩和欧美的一区| 91视频精品在这里| 日本va欧美va精品发布| 91在线porny国产在线看| 成人免费观看视频|