欢迎光临
我们一直在努力

服务器上文件打包下载

  项目的开发中不可避免的会碰到从服务器上面Down文件下来,Down单个文件有很多方法,比如文件流什么的,但是当需要Down下来的是一个内部包含多个文件的文件夹时,由于浏览器的解析规则,即使我们不嫌麻烦在项目里面来个循环下载,在web端要不停的接受文件,如此差的用户体验度是我们实在忍受不了的。

当然这个时候我们可以通过FTP上传和下载,不过在这里给大家分享另外一个方法,将要下载的文件和文件夹统统打包,然后下载压缩包 。这个打包的类通过调用压缩程序接口来实现,相当于你在服务器上面右击添加到压缩文件。

分享下这个打包类

 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 进行压缩 的方法

  方法调用 

这样就OK了 是不是比起原来方便多了

 

  • 海报
海报图正在生成中...
赞(0) 打赏
声明:
1、本博客不从事任何主机及服务器租赁业务,不参与任何交易,也绝非中介。博客内容仅记录博主个人感兴趣的服务器测评结果及一些服务器相关的优惠活动,信息均摘自网络或来自服务商主动提供;所以对本博客提及的内容不作直接、间接、法定、约定的保证,博客内容也不具备任何参考价值及引导作用,访问者需自行甄别。
2、访问本博客请务必遵守有关互联网的相关法律、规定与规则;不能利用本博客所提及的内容从事任何违法、违规操作;否则造成的一切后果由访问者自行承担。
3、未成年人及不能独立承担法律责任的个人及群体请勿访问本博客。
4、一旦您访问本博客,即表示您已经知晓并接受了以上声明通告。
文章名称:《服务器上文件打包下载》
文章链接:https://www.456zj.com/4808.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址