利用SharpZipLib实现实时zip压缩下载整个目录
2002-12-06 09:38
351 查看
要下载整个目录,一般方法是一个个文家下载或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压缩下载整个目录
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压缩下载整个目录
- 利用SharpZipLib实现实时zip压缩下载整个目录
- 利用SharpZipLib实现压缩多个文件或整个目录
- (原创)python zipfile实现压缩整个目录和子目录
- SharpZipLib实现压缩多个文件或整个目录
- xshell5 中利用sftp 上传下载整个目录
- 使用递归方法实现,向FTP服务器上传整个目录结构、从FTP服务器下载整个目录到本地的功能
- 利用Java实现压缩与解压缩(zip、gzip)支持中文路径
- 利用WinInet和多线程实现实时显示的下载进度条
- Java实现Zip压缩文件并可以下载
- CaptainGan------使用递归方法实现,向FTP服务器上传整个目录结构、从FTP服务器下载整个目录到本地的功能
- Android 利用Java实现压缩与解压缩(zip、gzip)支持中文路径
- Delphi7 中利用Indy的TidFtp客户端控件实现在服务器指定目录下下载需要的文件
- 用Java实现zip压缩文件和目录程序代码(二)
- 利用Java实现压缩与解压缩(zip、gzip)支持中文路径
- C++调用windowsAPI实现目录zip压缩
- 利用Java实现zip压缩解压缩
- C#利用SharpZipLib解压或压缩文件(支持多层目录递归压缩)
- 利用Java实现压缩与解压缩(zip、gzip)支持中文路径
- 使用递归方法实现,向FTP服务器上传整个目录结构、从FTP服务器下载整个目录到本地的功能