天天看點

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

我們經常會遇到批量上傳的問題,也會遇到将某個目錄下所有檔案都上傳到伺服器上的問題。那麼,如何解決此類問題呢?以前的技術一般采用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類的引用,然後添加如下檔案及内容:

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

//  ------------------------------------------

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

//  1. AttachmentUnZip.cs

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

//  ------------------------------------------

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

using  System;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

using  System.IO;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

using  ICSharpCode.SharpZipLib.Zip;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

using  ICSharpCode.SharpZipLib.GZip;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

using  ICSharpCode.SharpZipLib.BZip2;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

using  ICSharpCode.SharpZipLib.Checksums;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

using  ICSharpCode.SharpZipLib.Zip.Compression;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

using  ICSharpCode.SharpZipLib.Zip.Compression.Streams;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

namespace  WebZipUnzip

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

{

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

  public   class  AttachmentUnZip

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

{

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   public  AttachmentUnZip()

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

{   

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

  }

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   public   static   void  UpZip( string  zipFile)

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

{

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    string  []FileProperties = new   string [ 2 ];

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   FileProperties[ 0 ] = zipFile; // 待解壓的檔案

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   FileProperties[ 1 ] = zipFile.Substring( 0 ,zipFile.LastIndexOf( " // " ) + 1 ); // 解壓後放置的目标目錄

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   UnZipClass UnZc = new  UnZipClass();

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   UnZc.UnZip(FileProperties);

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

  }

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

 }

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

}

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

//  ---------------------------------------------

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

//  2. UnZipClass.cs

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

//  ---------------------------------------------

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

using  System;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

using  System.IO;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

using  ICSharpCode.SharpZipLib.Zip;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

using  ICSharpCode.SharpZipLib.GZip;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

using  ICSharpCode.SharpZipLib.BZip2;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

using  ICSharpCode.SharpZipLib.Checksums;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

using  ICSharpCode.SharpZipLib.Zip.Compression;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

using  ICSharpCode.SharpZipLib.Zip.Compression.Streams;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

namespace  WebZipUnzip

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

{

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

  public   class  UnZipClass

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

{   

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   ///   <summary>

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   ///  解壓檔案

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   ///   </summary>

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   ///   <param name="args"> 包含要解壓的檔案名和要解壓到的目錄名數組 </param>

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   public   void  UnZip( string [] args)

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

{

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   ZipInputStream s  =   new  ZipInputStream(File.OpenRead(args[ 0 ]));

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    try

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

{    

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    ZipEntry theEntry;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

     while  ((theEntry  =  s.GetNextEntry())  !=   null ) 

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

{   

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

      string  directoryName  =  Path.GetDirectoryName(args[ 1 ]);

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

      string  fileName       =  Path.GetFileName(theEntry.Name);

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

      // 生成解壓目錄

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

     Directory.CreateDirectory(directoryName);

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

      if  (fileName  !=  String.Empty) 

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

{   

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

       // 解壓檔案到指定的目錄

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

      FileStream streamWriter  =  File.Create(args[ 1 ] + fileName);

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

       int  size  =   2048 ;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

       byte [] data  =   new   byte [ 2048 ];

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

       while  ( true ) 

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

{

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

       size  =  s.Read(data,  0 , data.Length);

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

        if  (size  >   0 ) 

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

{

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

        streamWriter.Write(data,  0 , size);

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

       }  

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

        else  

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

{

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

         break ;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

       }

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

      }

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

      streamWriter.Close();

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

     }

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    }

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    s.Close();

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   }

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    catch (Exception eu)

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

{

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

     throw  eu;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   }

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    finally

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

{

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    s.Close();

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   }

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

  } // end UnZip

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   public   static   bool  UnZipFile( string  file,  string  dir)

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

{

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    try

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

{

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

     if  ( ! Directory.Exists(dir))

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

     Directory.CreateDirectory(dir);

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

     string  fileFullName  =  Path.Combine(dir,file);

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    ZipInputStream s  =   new  ZipInputStream(File.OpenRead( fileFullName ));

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    ZipEntry theEntry;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

     while  ((theEntry  =  s.GetNextEntry())  !=   null )

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

{

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

      string  directoryName  =  Path.GetDirectoryName(theEntry.Name);

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

      string  fileName  =  Path.GetFileName(theEntry.Name);

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

      if  (directoryName  !=  String.Empty)

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

      Directory.CreateDirectory( Path.Combine(dir, directoryName));

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

      if  (fileName  !=  String.Empty)

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

{

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

      FileStream streamWriter  =  File.Create( Path.Combine(dir,theEntry.Name) );

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

       int  size  =   2048 ;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

       byte [] data  =   new   byte [ 2048 ];

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

       while  ( true )

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

{

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

       size  =  s.Read(data,  0 , data.Length);

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

        if  (size  >   0 )

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

{

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

        streamWriter.Write(data,  0 , size);

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

       }

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

        else

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

{

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

         break ;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

       }

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

      }

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

      streamWriter.Close();

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

     }

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    }

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    s.Close();

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

     return   true ;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   }

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    catch  (Exception)

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

{

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

     throw ;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   }

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

  }

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

 } // end UnZipClass

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

}

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

//  ----------------------------------------------

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

//  3. ZipClass.cs

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

//  ----------------------------------------------

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

using  System;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

using  System.IO;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

using  ICSharpCode.SharpZipLib.Zip;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

using  ICSharpCode.SharpZipLib.GZip;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

using  ICSharpCode.SharpZipLib.BZip2;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

using  ICSharpCode.SharpZipLib.Checksums;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

using  ICSharpCode.SharpZipLib.Zip.Compression;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

using  ICSharpCode.SharpZipLib.Zip.Compression.Streams;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

namespace  WebZipUnzip

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

{

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

  ///   <summary>

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

  ///  壓縮檔案

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

  ///   </summary>

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

  public   class  ZipClass

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

{

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   public   void  ZipFile( string  FileToZip,  string  ZipedFile , int  CompressionLevel,  int  BlockSize, string  password)

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

{

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    // 如果檔案沒有找到,則報錯

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    if  ( !  System.IO.File.Exists(FileToZip)) 

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

{

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

     throw   new  System.IO.FileNotFoundException( " The specified file  "   +  FileToZip  +   "  could not be found. Zipping aborderd " );

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   }

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   System.IO.FileStream StreamToZip  =   new  System.IO.FileStream(FileToZip,System.IO.FileMode.Open , System.IO.FileAccess.Read);

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   System.IO.FileStream ZipFile  =  System.IO.File.Create(ZipedFile);

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   ZipOutputStream ZipStream  =   new  ZipOutputStream(ZipFile);

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   ZipEntry ZipEntry  =   new  ZipEntry( " ZippedFile " );

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   ZipStream.PutNextEntry(ZipEntry);

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   ZipStream.SetLevel(CompressionLevel);

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    byte [] buffer  =   new   byte [BlockSize];

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   System.Int32 size  = StreamToZip.Read(buffer, 0 ,buffer.Length);

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   ZipStream.Write(buffer, 0 ,size);

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    try  

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

{

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

     while  (size  <  StreamToZip.Length) 

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

{

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

      int  sizeRead  = StreamToZip.Read(buffer, 0 ,buffer.Length);

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

     ZipStream.Write(buffer, 0 ,sizeRead);

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

     size  +=  sizeRead;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    }

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   }  

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    catch (System.Exception ex)

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

{

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

     throw  ex;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   }

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   ZipStream.Finish();

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   ZipStream.Close();

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   StreamToZip.Close();

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

  }

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   public   void  ZipFileMain( string [] args)

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

{

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    // string[] filenames = Directory.GetFiles(args[0]);

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    string [] filenames  =   new   string []

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

{args[ 0 ]} ;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   Crc32 crc  =   new  Crc32();

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   ZipOutputStream s  =   new  ZipOutputStream(File.Create(args[ 1 ]));

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   s.SetLevel( 6 );  //  0 - store only to 9 - means best compression

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    foreach  ( string  file  in  filenames) 

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

{

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

     // 打開壓縮檔案

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    FileStream fs  =  File.OpenRead(file);   

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

     byte [] buffer  =   new   byte [fs.Length];

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    fs.Read(buffer,  0 , buffer.Length);

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    ZipEntry entry  =   new  ZipEntry(file);

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    entry.DateTime  =  DateTime.Now;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

     //  set Size and the crc, because the information

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

     //  about the size and crc should be stored in the header

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

     //  if it is not set it is automatically written in the footer.

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

     //  (in this case size == crc == -1 in the header)

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

     //  Some ZIP programs have problems with zip files that don't store

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

     //  the size and crc in the header.

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    entry.Size  =  fs.Length;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    fs.Close();

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    crc.Reset();

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    crc.Update(buffer);

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    entry.Crc   =  crc.Value;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    s.PutNextEntry(entry);

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    s.Write(buffer,  0 , buffer.Length);

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   }   

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   s.Finish();

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   s.Close();

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

  }

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

 }

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

}

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

//  ---------------------------------------------

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

//  4. WebForm1.aspx

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

//  ---------------------------------------------

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   <% @ Page language = " c# "  Codebehind = " WebForm1.aspx.cs "  AutoEventWireup = " false "  Inherits = " WebZipUnzip.WebForm1 "   %>& nbsp;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

< META content = " Microsoft Visual Studio .NET 7.1 "  name = GENERATOR >

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

< META content = C# name = CODE_LANGUAGE >

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

< META content = JavaScript name = vs_defaultClientScript >

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

< META content = http: // schemas.microsoft.com/intellisense/ie5 name=vs_targetSchema>

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

< FORM id = Form1 method = post runat = " server " ><? xml: namespace  prefix  =  asp  />< asp:Button id = Button1 style = " Z-INDEX: 101; LEFT: 56px; POSITION: absolute; TOP: 64px "  runat = " server "  Text = " 壓縮 " ></ asp:Button >< asp:Button id = Button2 style = " Z-INDEX: 102; LEFT: 112px; POSITION: absolute; TOP: 64px "  runat = " server "  Text = " 解壓 " ></ asp:Button >< INPUT id = File1 style = " Z-INDEX: 103; LEFT: 32px; POSITION: absolute; TOP: 24px "  type = file name = File1 runat = " server " >   </ FORM ></ BODY ></ HTML >

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

// -------------------------------------------

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

//  5.WebForm1.aspx.cs

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

// -------------------------------------------

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

using  System;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

using  System.Collections;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

using  System.ComponentModel;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

using  System.Data;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

using  System.Drawing;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

using  System.IO;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

using  System.Web;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

using  System.Web.SessionState;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

using  System.Web.UI;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

using  System.Web.UI.WebControls;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

using  System.Web.UI.HtmlControls;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

namespace  WebZipUnzip

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

{

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

  ///   <summary>

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

  ///  Summary description for WebForm1.

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

  ///   </summary>

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

  public   class  WebForm1 : System.Web.UI.Page

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

{

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   protected  System.Web.UI.WebControls.Button Button1;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   protected  System.Web.UI.HtmlControls.HtmlInputFile File1;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   protected  System.Web.UI.WebControls.Button Button2;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   private   void  Page_Load( object  sender, System.EventArgs e)

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

{

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    //  Put user code to initialize the page here

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

  }

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   Web Form Designer generated code #region  Web Form Designer generated code

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   override   protected   void  OnInit(EventArgs e)

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

{

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    //

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    //  CODEGEN: This call is required by the ASP.NET Web Form Designer.

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    //

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   InitializeComponent();

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    base .OnInit(e);

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

  }

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   ///   <summary>

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   ///  Required method for Designer support - do not modify

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   ///  the contents of this method with the code editor.

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   ///   </summary>

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   private   void  InitializeComponent()

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

{    

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    this .Button1.Click  +=   new  System.EventHandler( this .Button1_Click);

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    this .Button2.Click  +=   new  System.EventHandler( this .Button2_Click);

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    this .Load  +=   new  System.EventHandler( this .Page_Load);

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

  }

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   #endregion

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   壓縮 #region  壓縮

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   private   void  Button1_Click( object  sender, System.EventArgs e)

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

{

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    string  []FileProperties = new   string [ 2 ];   

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    string  fullName = this .File1.PostedFile.FileName; // C:/test/a.txt

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    string  destPath = System.IO.Path.GetDirectoryName(fullName); // C:/test

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    // 待壓縮檔案

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   FileProperties[ 0 ] = fullName;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    // 壓縮後的目标檔案

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   FileProperties[ 1 ] =  destPath  + " // " +  System.IO.Path.GetFileNameWithoutExtension(fullName)  +   " .zip " ;

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   ZipClass Zc = new  ZipClass();

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   Zc.ZipFileMain(FileProperties);

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    // 删除壓縮前的檔案

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   System.IO.File.Delete(fullName);

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

  }

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   #endregion

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   解壓 #region  解壓

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   private   void  Button2_Click( object  sender, System.EventArgs e)

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

{

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    string  fullName = this .File1.PostedFile.FileName; // C:/test/a.zip

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    // 解壓檔案

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    // AttachmentUnZip.UpZip(fullName);

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]
用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

//    string[] FileProperties = new string[2];

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

//    FileProperties[0] = fullName; // 待解壓的檔案

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

//    FileProperties[1] = System.IO.Path.GetDirectoryName(fullName); // 解壓後放置的目标目錄

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

//    UnZipClass UnZc=new UnZipClass();

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

//    UnZc.UnZip(FileProperties);

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    string  dir  =  System.IO.Path.GetDirectoryName(fullName);

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

    string  fileName  =  System.IO.Path.GetFileName(fullName);

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   UnZipClass.UnZipFile(fileName, dir);

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

  }

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

   #endregion

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

 }

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

}

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

OK! 試試看。

  此方案解決了檔案名中文字的問題,目錄解壓縮問題。

  至于整個檔案夾批量上傳并壓縮成一個WINZIP壓縮包的問題,沒有時間解決了,各位如有解決方案,不妨共享一下。

0 0 0 (請您對文章做出評價) posted on 2006-05-20 15:48 程式人生~程式員 閱讀(235) 評論(2)   編輯 收藏 網摘 所屬分類: .NET

用ASP.Net實作檔案的線上壓縮和解壓縮[出處:CSDN]

Body:656.25,BeforeCate:0,375,Total:1453.125

評論

553942

#1樓 2006-10-09 11:57 也算賭徒[未注冊使用者] 測試成功!但有問題,壓縮的檔案裡帶了檔案的路徑(比如:我的檔案路徑為:

"D:/upload/2.txt")壓縮包的結構為:"2.zip/d:/upload/2.txt".出來一大堆沒用的檔案夾.

我把ZipClass.cs類的第一個方法改了以下.加了個參數并且對第29行有了點修改.測試後壓縮檔案結構變為:"2.zip/2.txt"

public void ZipFile(string FileToZip, string ZipedFile,string ZipedName, int CompressionLevel, int BlockSize, string password)

{

//如果檔案沒有找到,則報錯

if (!System.IO.File.Exists(FileToZip))

{

throw new System.IO.FileNotFoundException("The specified file " + FileToZip + " could not be found. Zipping aborderd");

}

System.IO.FileStream StreamToZip = new System.IO.FileStream(FileToZip, System.IO.FileMode.Open, System.IO.FileAccess.Read);

System.IO.FileStream ZipFile = System.IO.File.Create(ZipedFile);

ZipOutputStream ZipStream = new ZipOutputStream(ZipFile);

ZipEntry ZipEntry = new ZipEntry(ZipedName);

ZipStream.PutNextEntry(ZipEntry);

ZipStream.SetLevel(CompressionLevel);

byte[] buffer = new byte[BlockSize];

System.Int32 size = StreamToZip.Read(buffer, 0, buffer.Length);

ZipStream.Write(buffer, 0, size);

try

{

while (size < StreamToZip.Length)

{

int sizeRead = StreamToZip.Read(buffer, 0, buffer.Length);

ZipStream.Write(buffer, 0, sizeRead);

size += sizeRead;

}

}

catch (System.Exception ex)

{

throw ex;

}

ZipStream.Finish();

ZipStream.Close();

StreamToZip.Close();

}

這個方法解壓縮檔案時是支援壓縮包裡有多個檔案的,但解出後為什麼包錯不太清楚,有解決的麼?

   回複    引用