我們經常會遇到批量上傳的問題,也會遇到將某個目錄下所有文件都上傳到服務器上的問題。那么,如何解決此類問題呢?以前的技術一般采用ActiveX等方式,這里筆者采用SharpZlib來實現,聽說VS2005已有壓縮和解壓縮的解決方案,筆者還沒有時間用VS2005,所以就只好使用VS2003 + SharpZlib來解決問題了。
1、首先從這里下載0.84版本的SharpZlib源碼及示例碼。
2、下載下來之后你發現它沒有VS2003的解決方案文件,沒有關系。你可以自己建立,首先新建一個ZipUnzip的解決方案,然后,將上面經過解壓縮之后的所有文件及目錄COPY到你的解決方案所在的目錄下。
3、在VS2003解決方案資源管理器(一般是在右上方中部點的位置)中點擊顯示所有文件按鈕,然后可以見到很多“虛”的圖標、文件及文件夾等,可以一次選擇它們,然后包含進項目中。
4、編譯,最好使用Release選項,編譯完成之后你可以在/bin/Release/看到ZipUnzip.dll的類了。如果你編譯時報錯,說什么AssemblyKeyFile之類的,你可以使用強命名工具新建一個,也可以將AssemblyInfo.cs中[assembly: AssemblyKeyFile("。。。。。")]改成:[assembly: AssemblyKeyFile("")] (不推薦這樣做)。
5、新建一個WEBFORM項目,添加ZipUnzip.dll類的引用,然后添加如下文件及內容:
// ------------------------------------------
// 1. AttachmentUnZip.cs
// ------------------------------------------
using System;
using System.IO;
using ICSharpCode.SharpZipLib.Zip;
using ICSharpCode.SharpZipLib.GZip;
using ICSharpCode.SharpZipLib.BZip2;
using ICSharpCode.SharpZipLib.Checksums;
using ICSharpCode.SharpZipLib.Zip.Compression;
using ICSharpCode.SharpZipLib.Zip.Compression.Streams;
namespace WebZipUnzip
{
public class AttachmentUnZip
{
public AttachmentUnZip()
{
}
public static void UpZip(string zipFile)
{
string []FileProperties=new string[2];
FileProperties[0]=zipFile;//待解壓的文件
FileProperties[1]=zipFile.Substring(0,zipFile.LastIndexOf("http://")+1);//解壓后放置的目標目錄
UnZipClass UnZc=new UnZipClass();
UnZc.UnZip(FileProperties);
}
}
}
// ---------------------------------------------
// 2. UnZipClass.cs
// ---------------------------------------------
using System;
using System.IO;
using ICSharpCode.SharpZipLib.Zip;
using ICSharpCode.SharpZipLib.GZip;
using ICSharpCode.SharpZipLib.BZip2;
using ICSharpCode.SharpZipLib.Checksums;
using ICSharpCode.SharpZipLib.Zip.Compression;
using ICSharpCode.SharpZipLib.Zip.Compression.Streams;
namespace WebZipUnzip
{
public class UnZipClass
{
新聞熱點
疑難解答
圖片精選