利用SharpZipLib实现实时zip压缩下载整个目录

原创 2002年12月06日 09:38:00

要下载整个目录,一般方法是一个个文家下载或ftp工具
现在用SharpZipLib就能实现实时zip压缩下载整个目录

SharpZipLib提供了多种压缩算法的支持,纯csharp代码,参见
http://www.icsharpcode.net/OpenSource/SharpZipLib/default.asp

原理是通过递归方法将每个文件压缩到ZipOutputStream,然后下载

代码和范例如下:

<%@ Import namespace="ICSharpCode.SharpZipLib.Zip" %>
<%@ Import Namespace="System.IO" %>
<script language="c#" runat="server">
 ZipOutputStream zos=null;
 String strBaseDir="";
 void dlZipDir(string strPath,string strFileName){
  MemoryStream ms =null;
  Response.ContentType = "application/octet-stream";
  strFileName=HttpUtility.UrlEncode(strFileName).Replace('+',' ');
  Response.AddHeader("Content-Disposition", "attachment; filename=" + strFileName+".zip");
  ms = new MemoryStream();
  zos = new ZipOutputStream(ms);
  strBaseDir=strPath+"//";
  addZipEntry(strBaseDir);
  zos.Finish();
  zos.Close();
  Response.Clear();
  Response.BinaryWrite(ms.ToArray());
  Response.End();
 }
 
 void addZipEntry(string PathStr){
  DirectoryInfo di= new DirectoryInfo(PathStr);
  foreach(DirectoryInfo item in di.GetDirectories()){
   addZipEntry(item.FullName);
  }
  foreach(FileInfo item in di.GetFiles()){
   FileStream fs = File.OpenRead(item.FullName);
   byte[] buffer = new byte[fs.Length];
   fs.Read(buffer, 0, buffer.Length);
   string strEntryName=item.FullName.Replace(strBaseDir,"");
   ZipEntry entry = new ZipEntry(strEntryName);
   zos.PutNextEntry(entry);
   zos.Write(buffer, 0, buffer.Length);
   fs.Close();
  }
 }
 void Page_Load(){
  dlZipDir(Server.MapPath("."),"test");
 }
</script>

利用SharpZipLib实现实时zip压缩下载整个目录

要下载整个目录,一般方法是一个个文家下载或ftp工具现在用SharpZipLib就能实现实时zip压缩下载整个目录SharpZipLib提供了多种压缩算法的支持,纯csharp代码,参见http://...
  • So_CooL
  • So_CooL
  • 2006年09月12日 11:29
  • 888

使用SharpZipLib实现zip压缩

使用SharpZipLib实现zip压缩 使用国外开源加压解压库ICSharpCode.SharpZipLib实现加压,该库的官方网站为 http://www.icsharpcode....
  • binbingg
  • binbingg
  • 2013年09月05日 15:18
  • 396

SharpZipLib实现压缩多个文件或整个目录

using System; using System.IO; using ICSharpCode.SharpZipLib.Zip; using ICSharpCode.SharpZipLib.C...
  • kingmax54212008
  • kingmax54212008
  • 2014年08月03日 15:59
  • 5475

使用SharpZipLib实现zip压缩

使用国外开源加压解压库ICSharpCode.SharpZipLib实现加压,该库的官方网站为http://www.icsharpcode.net/OpenSource/SharpZipLib/Dow...
  • foxphoenix
  • foxphoenix
  • 2009年03月15日 22:36
  • 681

SharpZipLib压缩文件和文件夹

本文是在其他人基础上修改而来,测试过程: 正常zip方式压缩文件,然后用wrar工具可以解压出来(开始用wrar3.4版本的怎么也解不出来,以为是不支持wrar解压,后来改用3.9及4.11版本可以...
  • superhoy
  • superhoy
  • 2012年05月28日 09:59
  • 3068

C#使用SharpZipLib实现zip压缩

       使用国外开源加压解压库ICSharpCode.SharpZipLib实现加压,该库的官方网站为http://www.icsharpcode.net/OpenSource/SharpZip...
  • kenkao
  • kenkao
  • 2010年10月14日 11:45
  • 5121

利用SharpZipLib实现压缩多个文件或整个目录

using System;using System.IO;using ICSharpCode.SharpZipLib.Zip;using ICSharpCode.SharpZipLib.Checksu...
  • lmtz
  • lmtz
  • 2006年09月08日 16:17
  • 1755

wget 下载整个网站,或者特定目录

转载自:http://www.cnblogs.com/lidp/archive/2010/03/02/1696447.html 需要下载某个目录下面的所有文件。命令如下 wget -c -r ...
  • memray
  • memray
  • 2013年09月16日 23:44
  • 41456

C#使用ICSharpCode.SharpZipLib.dll压缩文件夹和文件

using System; using System.Collections.Generic; using System.Linq; using System.Text; using ICSharpC...
  • zhu2695
  • zhu2695
  • 2014年07月09日 10:33
  • 1483

将零散文件使用ICSharpCode.SharpZipLib压缩打包后一次性下载

使用流读取并压缩文件。 zipstream.IsStreamOwner = false;必须设置 在MVC中使用FileStreamResult File(Stream fileStream, s...
  • letnet1981
  • letnet1981
  • 2016年08月31日 19:21
  • 764
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:利用SharpZipLib实现实时zip压缩下载整个目录
举报原因:
原因补充:

(最多只允许输入30个字)