服務器上文件打包下載

   項目的開發中不可避免的會碰到從服務器上面Down文件下來,Down單個文件有不少方法,好比文件流什麼的,可是當須要Down下來的是一個內部包含多個文件的文件夾時,因爲瀏覽器的解析規則,即便咱們不嫌麻煩在項目裏面來個循環下載,在web端要不停的接受文件,如此差的用戶體驗度是咱們實在忍受不了的。web

  固然這個時候咱們能夠經過FTP上傳和下載,不過在這裏給你們分享另一個方法,將要下載的文件和文件夾通通打包,而後下載壓縮包 。這個打包的類經過調用壓縮程序接口來實現,至關於你在服務器上面右擊添加到壓縮文件。shell

  分享下這個打包類瀏覽器

  1 using System;
  2 using System.Diagnostics;
  3 using System.IO;
  4 using Microsoft.Win32;
  5 
  6 namespace GM360_REWARD.Controllers
  7 {
  8     public class WinRARCSharpss
  9     {
 10 // WinRAR安裝註冊表key
 11         private const string WinRAR_KEY = @"WinRAR.ZIP\shell\open\command";
 12 
 13         /// <summary>
 14         /// 利用 WinRAR 進行壓縮
 15         /// </summary>
 16         /// <param name="path">將要被壓縮的文件夾(絕對路徑)</param>
 17         /// <param name="rarPath">壓縮後的 .rar 的存放目錄(絕對路徑)</param> 
 18         /// <param name="rarName">壓縮文件的名稱(包括後綴)</param>
 19         /// <returns>true 或 false。壓縮成功返回 true,反之,false。</returns> 
 20         public bool RAR(string path, string rarPath, string rarName)
 21         {
 22             bool flag = false;
 23             string rarexe; //WinRAR.exe 的完整路徑
 24             RegistryKey regkey; //註冊表鍵 
 25             Object regvalue; //鍵值 
 26             string cmd; //WinRAR 命令參數 
 27             ProcessStartInfo startinfo;
 28             Process process;
 29             try
 30             {
 31                 regkey = Registry.ClassesRoot.OpenSubKey(WinRAR_KEY);
 32                 regvalue = regkey.GetValue(""); // 鍵值爲 "d:\Program Files\WinRAR\WinRAR.exe" "%1"
 33                 rarexe = regvalue.ToString();
 34                 regkey.Close();
 35                 rarexe = rarexe.Substring(1, rarexe.Length - 7); // d:\Program Files\WinRAR\WinRAR.exe 
 36                 Directory.CreateDirectory(path); //壓縮命令,至關於在要壓縮的文件夾(path)上點右鍵->WinRAR->添加到壓縮文件->輸入壓縮文件名(rarName) 
 37                 cmd = string.Format("a {0} {1} -r", rarName, path);
 38                 startinfo = new ProcessStartInfo();
 39                 startinfo.FileName = rarexe;
 40                 startinfo.Arguments = cmd; //設置命令參數 
 41                 startinfo.WindowStyle = ProcessWindowStyle.Hidden; //隱藏 WinRAR 窗口 
 42                 startinfo.WorkingDirectory = rarPath;
 43                 process = new Process();
 44                 process.StartInfo = startinfo;
 45                 process.Start();
 46                 process.WaitForExit(); //無限期等待進程 winrar.exe 退出 
 47                 if (process.HasExited)
 48                 {
 49                     flag = true;
 50                 }
 51                 process.Close();
 52             }
 53             catch (Exception e)
 54             {
 55                 throw e;
 56             }
 57             return flag;
 58         }
 59 
 60         /// <summary> 
 61         /// 利用 WinRAR 進行解壓縮
 62         /// </summary> 
 63         /// <param name="path">文件解壓路徑(絕對)</param> 
 64         /// <param name="rarPath">將要解壓縮的 .rar 文件的存放目錄(絕對路徑)</param>
 65         /// <param name="rarName">將要解壓縮的 .rar 文件名(包括後綴)</param> 
 66         /// <returns>true 或 false。解壓縮成功返回 true,反之,false。</returns>
 67         public bool UnRAR(string path, string rarPath, string rarName)
 68         {
 69             bool flag = false;
 70             string rarexe;
 71             RegistryKey regkey;
 72             Object regvalue;
 73             string cmd;
 74             ProcessStartInfo startinfo;
 75             Process process;
 76             try
 77             {
 78                 regkey = Registry.ClassesRoot.OpenSubKey(WinRAR_KEY);
 79                 regvalue = regkey.GetValue("");
 80                 rarexe = regvalue.ToString();
 81                 regkey.Close();
 82                 rarexe = rarexe.Substring(1, rarexe.Length - 7);
 83                 Directory.CreateDirectory(path); //解壓縮命令,至關於在要壓縮文件(rarName)上點右鍵->WinRAR->解壓到當前文件夾 
 84                 cmd = string.Format("x {0} {1} -y", rarName, path);
 85                 startinfo = new ProcessStartInfo();
 86                 startinfo.FileName = rarexe;
 87                 startinfo.Arguments = cmd;
 88                 startinfo.WindowStyle = ProcessWindowStyle.Hidden;
 89                 startinfo.WorkingDirectory = rarPath;
 90                 process = new Process();
 91                 process.StartInfo = startinfo;
 92                 process.Start();
 93                 process.WaitForExit();
 94                 if (process.HasExited)
 95                 {
 96                     flag = true;
 97                 }
 98                 process.Close();
 99             }
100             catch (Exception e)
101             {
102                 throw e;
103             }
104             return flag;
105         }
106     }

 這個項目主要用到的是  利用 WinRAR 進行壓縮 的方法服務器

  方法調用 spa

WinRARCSharp.RAR(a,b,c)

這樣就OK了 是否是比起原來方便多了code

相關文章
相關標籤/搜索