2

我正在使用 ICSharpCode.SharpZipLib.Zip 压缩文件和文件夹,并使用 response.Binary 写入将其作为内存流传递。

这是我的代码:

MemoryStream df= new MemoryStream();                
ZipOutputStream s = new ZipOutputStream(df);
s.SetLevel(9);

byte[] data = (byte[])file.OpenBinary();
s.Write(data, 0, data.Length);
s.Finish();

s.Close();
byte[] outBuf = df.GetBuffer();        
Response.Expires = 0;                 
Response.Buffer = true;                 
Response.ClearContent();                
Response.AddHeader("content-disposition", "inline; filename="out.zip");
Response.ContentType = "application/zip";
Response.BinaryWrite(outBuf);
HttpContext.Current.ApplicationInstance.CompleteRequest();

当我尝试打开 out.zip 文件时,提示该 zip 文件已损坏或损坏,并且 crc 值显示为 000000。

解决方案是什么?为什么会发生此错误?

4

2 回答 2

2

我猜猜,你应该打电话给:

s.Flush();
df.Flush();

就在你调用之前df.GetBuffer()

于 2011-03-28T15:30:48.103 回答
0

尝试在关闭之前显式刷新流“s”。

于 2011-03-28T15:31:32.893 回答