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;
}
}
谁能帮我?谢谢
查看文档,我怀疑您想调用
zip.AddFiles(arrFileName, false, "");
这样就不会保留目录层次结构。可能只有
zip.AddFiles(arrFileName, "");
也会起作用;我还不完全清楚。
(此外,我强烈建议您在方法中去掉try
/catch
块-这比无用更糟糕,因为它只会丢失信息。如果在任何ZipFile
方法中引发异常,则由于重新引发异常的方式,您将丢失完整的堆栈跟踪。)