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;
}
}
Who can help me ? Thanks!
Looking at the documentation, I suspect you want to call
zip.AddFiles(arrFileName, false, "");
so that the directory hierarchy isn't preserved. It's possible that just
zip.AddFiles(arrFileName, "");
would work too; it's not entirely clear to me.
(Additionally, I'd strongly recommend that you get rid of the try
/catch
block in your method - it's worse than useless, as it just loses information. If an exception is thrown within any of the ZipFile
methods, you'll lose the full stack trace due to the way you're rethrowing the exception.)
See more on this question at Stackoverflow