如何将服务端的多个文件打包下载(转)

正在开发的系统中包含了这部分功能。下面将有关重点的代码粘贴出来,给大家参考

我用到了ICSharpCode.SharpZipLib这个dll. 据我所知,凡是现在做压缩和解压缩之类的程序,很少有人会不用这个组件的。赞一个先

 

1. 核心代码

 

            MemoryStream ms = new MemoryStream();
            byte[] buffer = null;

            using (ZipFile file = ZipFile.Create(ms))
            {
                file.BeginUpdate();
                file.NameTransform = new MyNameTransfom();//通过这个名称格式化器,可以将里面的文件名进行一些处理。默认情况下,会自动根据文件的路径在zip中创建有关的文件夹。

                file.Add(Server.MapPath("~/images/1.jpg"));
                file.Add(Server.MapPath("~/images/2.jpg"));
                file.Add(Server.MapPath("~/images/3.jpg"));

                file.CommitUpdate();

                buffer = new byte[ms.Length];
                ms.Position = 0;
                ms.Read(buffer, 0, buffer.Length);
            }

            Response.AddHeader("content-disposition", "attachment;filename=Test.zip");
            Response.BinaryWrite(buffer);
            Response.Flush();
            Response.End();
 
另外,我专门写了一个NameTransfom
    public class MyNameTransfom : ICSharpCode.SharpZipLib.Core.INameTransform {

        #region INameTransform 成员

        public string TransformDirectory(string name)
        {
            return null;
        }

        public string TransformFile(string name)
        {
            return Path.GetFileName(name);
        }

        #endregion
    }
转自:http://www.cnblogs.com/chenxizhang/archive/2009/12/23/1630844.html
时间: 2024-12-25 21:40:15

如何将服务端的多个文件打包下载(转)的相关文章

vc++编程问题-VC实现服务端和客户端的文件传输

问题描述 VC实现服务端和客户端的文件传输 套接字会用,也可以实现数据库的数据传输,那么文件怎么传输呢?上午百度了好多个例子,但是还是看不懂,太多了.哪位大神告诉我关键的代码.暂时只要求可以传输就可以了.cfile? 解决方案 文件传输本质上就是数据传输 只是在本地将文件读出字节流,传给对方再保存成文件:就实现了文件传输

java socket手机通信-关于java的问题:手机用socket连接电脑的服务端时老出现文件找不到的错误,求解决

问题描述 关于java的问题:手机用socket连接电脑的服务端时老出现文件找不到的错误,求解决 30C 解决方案 也可以私聊我.扣扣1944687725 解决方案二: 解决方案三: 你那个斜杠是不是写反了 passwdinput.dat 解决方案四: 你仔细看看出错的提示, 是读文件的时候找不到,对应的代码是在ServerThread.java的51行然后,你把路径改为绝对路径试一试,如果可以了,就是你相对路径的根目录不对.保证passwd文件夹在你的执行目录下 解决方案五: 右键 prope

asp.net-从web服务端输出多个文件有哪些方案?

问题描述 从web服务端输出多个文件有哪些方案? 需求:浏览器发起一次请求,服务端在内存中生成若干文件,提供给浏览器一次性下载, 文件不存留在服务器. 服务端语言:asp.net mvc 解决方案 内存中的内容直接写回http的response就好了.客户端写入文件

winform的服务端怎么发送音频文件到浏览器上并在网页播放?

问题描述 具体的问题:winform的服务端打开文件发送音频文件到浏览器上并在网页播放(浏览器作为客户端,直接输ip地址和端口号连接我的服务端)怎么弄?是不是需要发送一个http的头信息指明发过来的是什么东西?是的话,需要怎么发呢?求解!!! 解决方案 解决方案二:来个人吭声好吗解决方案三:Html5的Video,或者flash都是可以的解决方案四:引用2楼hanjun0612的回复: Html5的Video,或者flash都是可以的 我发的流的形式,打开一个文件后转成流发过去解决方案五:来个人

PHP5.5在windows 安装使用 memcached 服务端的方法以及 php_memcache.dll 下载

PHP5.5 在windows下安装 memcached 的方法 下载服务端资源 http://download.csdn.net/detail/zsjangel/7104727 下载完成后,解压(我用的是 64位的,32位版本的我没有尝试过,应该没有问题),进入 DOS 命令行 先 cd 到解压后的目录 然后执行服务注册命令 memcached.exe -d install 卸载服务命令 memcached.exe -d uninstall 然后启动服务 memcached.exe -d st

php文件打包 下载之使用PHP自带的ZipArchive压缩文件并下载打包好的文件_php技巧

总结: 使用PHP下载文件的操作需要给出四个header(),可以参考我的另一篇博文:PHP如何实现下载功能超详细流程分析 计算文件的大小的时候,并不需要先打开文件,通过filesize($filename)就可以看出,如果需要先打开文件的话,filesize可能就会是这样的形式了filesize($filehandle) 向客户端回送数据的是,记得要设置一个buffer,用来指定每次向客户端输出多少数据,如:$buffer=1023.如果不指定的话,就会将整个文件全部写入内存当中,再一次性的讲

JSP 多个文件打包下载代码

现把该程序主要代码贴下,供大家需要的时候参考下:     <%@page import="java.util.*, java.net.*, java.text.*, java.util.zip.*, java.io.*" %> <%! static Vector expandFileList(String[] files, boolean inclDirs){ Vector v = new Vector(); if (files == null) return v;

struts多文件打包下载报错

问题描述 <actionname="getDownloadFile"method="getDownloadFile"class="com.njusc.wjsf.action.UnitAction"><resultname="success"type="stream"><paramname="contentType">${contentTypes}<

asp在IE浏览器中下载服务端上的各类文件的实现方法_应用技巧

即直接提示用户下载而不是由浏览器打开某些文件.注意,下面的代码拷贝到ASP文件中后,不要再添加一些非ASP代码在页面中:如HTML和javascript客户端的代码.  复制代码 代码如下: <% '-------------------------------------------- Response.Buffer = True Dim strFilePath, strFileSize, strFileName Const adTypeBinary = 1 strFilePath = "