How to unzip a zip file which include a folder into a folder

 

前几天在需要实现一个上传一个Zip目录文件到服务器并且在服务器端解压成目录的功能.从网络上找了很多参考文件,获益良多。目前比较常见的使用方法有
(1)GzipStream,这是asp.net中自带的方法。对于解压包含单个文件的文件,使用很方便。

缺点:对于解压包含多个目录的压缩文件,需要编写不少代码。还不一定能做到能解压用户上传的使用通用软件压缩的软件包。 

(2)使用ICSharpCode.SharpZipLib.dll     下载地址   http://www.icsharpcode.net/OpenSource/SharpZipLib/Download.aspx  

使用该方法也需要重新写不少代码,有点复杂。
优点:对于可以实现解压多种文件的功能,可遗址性强。

缺点:不一定能做到能解压用户上传的使用通用软件压缩的软件包。

(3)直接实用Shell API调用 7zip   winzip一类解压软件。实现方便简单,代码结构性好,对压缩的兼容性可以依奈系统。

确定,需要在系统安装可以在shell运行的解压缩软件。最后我决定直接用shell来实现,并且使用开源的截压缩软件7zip.

下面的关键代码。

使用说明:

a.和该代码配合的网页上加一个FileUpload,button控件。Button2_Click为 Button控件的 Click事件响应。

b.在webconfig.cfg中加上下面的一段,以配置7zip在服务器端的安装情况。
 <connectionStrings>
    <add name="7zip" connectionString="C:/Program Files/7-Zip/7z.exe " providerName=" x "/>
  </connectionStrings> 
或者直接使用在代码中使用7zip的安装路径。

c.注意设置服务器端的几个目录第一个为放用户上传好的文件的目录PathOnServer,第二个就是解压程序7zip执行时的当前路径。

        p.StartInfo.WorkingDirectory = strFolder;  

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值