ICSharpCode.SharpZipLib.Zip crc32 - PullRequest
       6

ICSharpCode.SharpZipLib.Zip crc32

2 голосов
/ 28 марта 2011

Я использую ICSharpCode.SharpZipLib.Zip для сжатия файлов и папок и передачи его в виде потока памяти с использованием response.Binary write.

Вот мой код:

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.

Какое решение для этого? Почему происходит эта ошибка?

Ответы [ 2 ]

2 голосов
/ 28 марта 2011

Я бы предположил, вы должны позвонить:

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

Непосредственно перед тем, как вызвать df.GetBuffer()

0 голосов
/ 28 марта 2011

Попробуйте явно очистить поток "s" перед закрытием.

...