2012-01-17 60 views
13

我需要將3個文件合併爲1個zip文件並使其可供用戶下載。除了一件事之外,我能夠達到我的要求:將文件壓縮到子文件夾中。使用SharpZipLib創建Zip文件

例如,我的文件位於如下所示:

C:\TTCG\WebSites\Health\ABC.CSV 
C:\TTCG\WebSites\Health\XYZ.CSV 
C:\TTCG\WebSites\Health\123.CSV 

但在壓縮文件,它通過使用「TTCG \網站已\健康\」作爲路徑壓縮文件夾中的文件。請參閱附件文件。

Example

我不想在路徑中的文件夾。我只想在zip文件中沒有文件夾的3個文件。我怎樣才能做到這一點?

我的代碼來生成壓縮文件如下:

ZipFile z = ZipFile.Create(Server.MapPath("~" + @"\Accident.zip")); 

//initialize the file so that it can accept updates 
z.BeginUpdate(); 

//add the file to the zip file   
z.Add(Server.MapPath("~" + @"\ABC.csv")); 
z.Add(Server.MapPath("~" + @"\XYZ.csv")); 
z.Add(Server.MapPath("~" + @"\123.csv"));   

//commit the update once we are done 
z.CommitUpdate(); 
//close the file 
z.Close(); 

回答

11

基礎上的常見問題,您必須手動剝離的文件夾路徑進行:

如何創建一個Zip文件沒有文件夾?

刪除用於創建的ZipEntry 文件名的路徑部分之前將其添加到在一個ZipOutputStream

ZipEntry entry = new ZipEntry(Path.GetFileName(fullPath));

的常見問題,可以發現here

它似乎是圖書館的限制。希望這可以幫助!

1
z.Add(pathToFile, pathInZipFile); 
+1

這不會編譯添加方法不需要2個字符串那樣 – 2014-02-19 01:34:30

3

如果你有一個FileSystemInfo您的文件,你可以使用:z.Add(file.FullName, Path.GetFileName(file.FullName));

這會在你的拉鍊的根目錄添加文件。

+0

這不會編譯添加方法不需要2個字符串像那樣 – 2014-02-19 01:33:57

+0

@MatthewLock該方法需要2個字符串像我這樣。 SharpZipLib v0.86.0.518 – 2014-03-14 07:55:05