2014-04-07 81 views
0

我有一個文件上傳控制。 我限制用戶只上傳zip文件。 我使用的命名空間是Ionic.Zip; 我也想檢查一下這個zip文件裏面是否有一個文件夾。 我必須限制用戶不要上傳帶有文件夾的zip文件。 我可以檢查有多少個文件的zip文件中像限制用戶上傳帶有文件夾內的zip文件

using (ZipFile zip = ZipFile.Read(file_path)) 
{ 
    if (zip.Count < 5) 
    { 
    } 

我不知道如何來檢查文件夾內

任何人都可以幫我請。 在此先感謝

+0

看一看[如何列出一個.zip f的內容在c#中的老]?(http://stackoverflow.com/questions/307774/how-to-list-the-contents-of-a-zip-folder-in-c) –

+0

你不能解壓縮到guid文件夾並檢查目錄計數? –

+0

我該怎麼辦?我是新來的。感謝您的回覆 – Shanna

回答

2
void Main() 
{ 
var isGood=false; 

    using (ZipFile zip = new ZipFile(@"c:\\1.zip")) 
{ 
    for (var i=0;i<zip.Count;i++) 
    if (zip[i].Attributes==FileAttributes.Directory) 
     { 
     isGood=false; 
     break; 
     } 

} 

if (isGood) Console.WriteLine ("ok"); 
else 
Console.WriteLine ("error"); 
} 

// Define other methods and classes here 

編輯:

有似乎是與你創造了這個zip文件的方式有問題。 (名爲3.zip):

enter image description here

,正如你可以看到 - 代碼工作:

我從你送我,創建新的zip文件中提取文件

enter image description here

所以我想DLL沒有強大到足以識別邊緣格式

+0

這沒有奏效。即使我有一個文件夾裏面,它顯示假 – Shanna

+0

@Shanna它在我的環境中工作。你可以發送zip文件嗎? –

+0

我可以在這裏附加zip文件嗎?對不起,但我不知道如何 – Shanna

2

您可以迭代您的zip對象的ZipEntries - ZipEntry對象包含IsDirectory屬性。

foreach(var entry in zip) 
{ 
    if(entry.IsDirectory) 
    { 
     //your stuff 
    } 
} 
+0

這也沒有工作。 entry.isdirectory顯示爲false – Shanna