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;
}
}
谁能帮帮我? 谢谢!
答案 0 :(得分:1)
查看documentation,我怀疑你想打电话
zip.AddFiles(arrFileName, false, "");
以便不保留目录层次结构。这可能只是
zip.AddFiles(arrFileName, "");
也会奏效;这对我来说并不完全清楚。
(另外,我强烈建议你摆脱方法中的try
/ catch
阻止 - 它比无用更糟糕,因为只是丢失了信息如果在任何ZipFile
方法中抛出异常,由于你重新抛出异常的方式,你将失去完整的堆栈跟踪。)