C#Ionic.Zip Zip文件,出现多级目录

本文关键字:Zip 多级 文件 C#Ionic | 更新日期: 2024-10-24 01:01:20

解决方案目录

E:'WebSolution'GenerateFiles
 | NEW HOTEL-4-64-1379.pdf
 | NEW HOTEL-4-64-1379.xls

正确

E:'WebSolution'GenerateFiles
 | NEW HOTEL-4-64-1379.pdf
 | NEW HOTEL-4-64-1379.xls
 | NEW HOTEL-4-64-1379.zip (Extract) 
                       | NEW HOTEL-4-64-1379.pdf
                       | NEW HOTEL-4-64-1379.xls

错了

E:'WebSolution'GenerateFiles
 | NEW HOTEL-4-64-1379.pdf
 | NEW HOTEL-4-64-1379.xls
 | NEW HOTEL-4-64-1379.zip (Extract) 
                   |WebSolution
                       |--|GenerateFiles
                       |--|--|NEW HOTEL-4-64-1379.pdf
                       |--|--|NEW HOTEL-4-64-1379.xls

==============================================

代码

public void Main(){
   string path=Server.MapPath("~/GenerateFiles"); 
   string zipPackageFileName=System.IO.Path.Combine(path,"NEW HOTEL-4-64-1379.zip");
   string[] arrFileName=new string[]{
        System.IO.Path.Combine(path,"NEW HOTEL-4-64-1379.pdf"),
    System.IO.Path.Combine(path,"NEW HOTEL-4-64-1379.pdf")
   };   
   
   CompressFilesToZip(arrFileName,zipPackageFileName);
   
}
using Ionic.Zip;
public void CompressFilesToZip(String[] arrFileName, string zipPackageFileName)
{
    try
    {
        using (ZipFile zip = new ZipFile())
        {
            zip.AddFiles(arrFileName);
            zip.Encryption = EncryptionAlgorithm.WinZipAes256;
            zip.CompressionLevel = Ionic.Zlib.CompressionLevel.BestCompression;
            zip.Password = PASSWORD_ATTACHMENT;
            zip.Save(zipPackageFileName);
        }
    }
    catch (Exception e)
    {
        throw e;
    }
}

谁能帮我?谢谢

C#Ionic.Zip Zip文件,出现多级目录

查看文档,我怀疑您想调用

zip.AddFiles(arrFileName, false, "");

这样就不会保留目录层次结构。可能只有

zip.AddFiles(arrFileName, "");

也会起作用;我还不完全清楚。

(此外,我强烈建议您在方法中去掉try/catch块-这比无用更糟糕,因为它只会丢失信息。如果在任何ZipFile方法中引发异常,则由于重新引发异常的方式,您将丢失完整的堆栈跟踪。)