无法在DotNetZip的SelectEntries中获取多个条目

时间:2012-12-14 05:56:25

标签: asp.net-mvc-3 dotnetzip

我正在尝试在我的MVC3项目中使用DotNetZipLib-DevKit-v1.9将文件解压缩到特定文件夹。

我想要的是 - 如何在zip.SelectEntries方法中添加多个条目。

以下是我在控制器操作中的代码:

public ActionResult ExtractZip(string fileName, HttpPostedFileBase fileData)
        {
            string zipToUnpack = @"C:\Users\Public\Pictures\Sample Pictures\images.zip";
            string unpackDirectory = System.IO.Path.GetTempPath();

            using (ZipFile zip1 = ZipFile.Read(zipToUnpack))
            {
                // here, we extract every entry, but we could extract conditionally
                // based on entry name, size, date, checkbox status, etc.  
                var collections = zip1.SelectEntries("name=*.jpg;*.jpeg;*.png;*.gif;");//This shows `0` items in collections

                foreach (var item in collections)
                {
                    item.Extract(unpackDirectory, ExtractExistingFileAction.OverwriteSilently);
                }
            }
            return Json(true);
        }

在此行var collections = zip1.SelectEntries("name=*.jpg;*.jpeg;*.png;*.gif;");中,如果我只指定单个扩展名,则可以正常使用

例如: var collections = zip1.SelectEntries("name=*.gif");这很好用

我也看过SelectEntries方法here,但它没有用,但

如何添加多个条目?

1 个答案:

答案 0 :(得分:0)

最后我可以回答我自己的问题。

为了选择多个条目,我们需要使用OR并选择多个条目,请使用以下代码:

var collections = zip1.SelectEntries("(name=*.jpg) OR (name=*.jpeg) OR (name=*.png) OR (name=*.gif)");

foreach (var item in collections)
{
    item.Extract(unpackDirectory, ExtractExistingFileAction.OverwriteSilently);
}