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 に答える