上次有寫了一篇關於使用SharpZipLib的文章 Streaming a zip file over http in .net with SharpZipLib
結果在客戶端實際使用時,當客戶下載zip檔案後,
使用Windows內建的compressed (zipped) Folders開啟解壓縮時,發現匯出現下方錯誤訊息!
在Google上搜尋了一下,查出發生的原因為,預設SharpZipLib使用的是Zip64格式
而Windows內建的compressed (zipped) Folders是不支援此格式的。
因此解決方法需要強制指定壓縮時,不使用Zip64格式。即可解決此問題。
加入程式碼:
zipOutput.UseZip64 = UseZip64.Off;
該段程式修改後如下:
byte[] buffer = new byte[1024 * 8];即可解決此問題了!!
using (ZipOutputStream zipOutput = new ZipOutputStream(stream))
{
zipOutput.UseZip64 = UseZip64.Off; //強制指定不使用Zip64格式壓縮,避免windows內建zip無法開啟
foreach (string fileName in fileNames)
{
ZipEntry zipEntry = new ZipEntry(fileName.Substring(fileName.LastIndexOf('\\') + 1));
zipOutput.PutNextEntry(zipEntry);
using (FileStream fread = File.OpenRead(fileName))
{
StreamUtils.Copy(fread, zipOutput, buffer);
}
}
zipOutput.Finish();
}
沒有留言:
張貼留言