asp.net2.0下,如何实现服务器端压缩包自解压

本文介绍了一个用于文件压缩和解压缩的实用类ZipUtility。该类提供了Compress和Decompress两个静态方法,分别用于将输入流压缩为GZip格式并输出到指定流中,以及从GZip格式的输入流中解压缩数据到输出流。此外,还提供了一个简单的应用实例,展示如何使用此类解压上传文件。
None.gifusing System;
None.gif
using System.Data;
None.gif
using System.Configuration;
None.gif
using System.Web;
None.gif
using System.Web.Security;
None.gif
using System.Web.UI;
None.gif
using System.Web.UI.WebControls;
None.gif
using System.Web.UI.WebControls.WebParts;
None.gif
using System.Web.UI.HtmlControls;
None.gif
using System.IO;
None.gif
using System.IO.Compression;
None.gif
ExpandedBlockStart.gifContractedBlock.gif
/**//// <summary>
InBlock.gif
/// ZipUtility 的摘要说明
ExpandedBlockEnd.gif
/// </summary>

None.gifpublic class ZipUtility
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif    
public ZipUtility()
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
//
InBlock.gif        
// TODO: 在此处添加构造函数逻辑
InBlock.gif        
//
ExpandedSubBlockEnd.gif
    }

InBlock.gif
InBlock.gif    
public static void Compress(Stream source, Stream destination)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif
InBlock.gif        
using (GZipStream output = new GZipStream(destination, CompressionMode.Compress))
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif
InBlock.gif            Pump(source, output);
InBlock.gif
ExpandedSubBlockEnd.gif        }

InBlock.gif
ExpandedSubBlockEnd.gif    }

InBlock.gif
InBlock.gif
InBlock.gif
InBlock.gif    
public static void Decompress(Stream source, Stream destination)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif
InBlock.gif        
using (GZipStream input = new GZipStream(source, CompressionMode.Decompress))
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif
InBlock.gif            Pump(input, destination);
InBlock.gif
ExpandedSubBlockEnd.gif        }

InBlock.gif
ExpandedSubBlockEnd.gif    }

InBlock.gif
InBlock.gif
InBlock.gif
InBlock.gif    
private static void Pump(Stream input, Stream output)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif
InBlock.gif        
byte[] bytes = new byte[4096];
InBlock.gif
InBlock.gif        
int n;
InBlock.gif
InBlock.gif        
while ((n = input.Read(bytes, 0, bytes.Length)) != 0)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif
InBlock.gif            output.Write(bytes, 
0, n);
InBlock.gif
ExpandedSubBlockEnd.gif        }

InBlock.gif
ExpandedSubBlockEnd.gif    }

InBlock.gif
ExpandedBlockEnd.gif}

None.gif简单应用:
None.gif
protected void Button1_Click(object sender, EventArgs e)
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif{
InBlock.gif        FileStream fs
=File.OpenWrite("d:/Data.txt");
InBlock.gif        Stream c
=this.FileUpload1.PostedFile.InputStream;
InBlock.gif        ZipUtility.Decompress(c, fs);
InBlock.gif        fs.Close();
InBlock.gif        c.Close();
InBlock.gif
ExpandedBlockEnd.gif    }

None.gif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值