.NET使用DotNetZip生成Zip文件并发送到HTTP Response Stream

时间:2013-04-11 09:08:20

标签: .net zip outputstream dotnetzip

我的以下代码出了问题。因为公司,我必须使用Windows 2003。他们使用这个系统。此代码在与Windows XP一起使用时不起作用。 此代码生成一个zip文件,然后我用Windows资源管理器打开它,它显示一个错误:“损坏的文件”。我使用DotNetZip.dll和特殊:Ionic.Zip。 zip文件在HTTP Response Stream中发送。

有人能帮助我吗?谢谢你的回答。

我的功能:

public void Zip()
    {
            Response.ContentType = "application/octet-stream";

            Response.AppendHeader("content-disposition", "attachment; filename=\"myFile.zip\"");

            byte[] buffer = new byte[4096];
            ZipOutputStream zipOutputStream = new ZipOutputStream(Response.OutputStream);

            zipOutputStream.CompressionLevel = Ionic.Zlib.CompressionLevel.Level3;

            string[] filestozip = Directory.GetFiles("C:\\myFolderToZip", "*.*", SearchOption.AllDirectories);

            foreach (string fileName in filestozip)
            {
                Stream fs = File.OpenRead(fileName);
                zipOutputStream.PutNextEntry(fileName.Replace(dir + "\\", ""));
                int count = fs.Read(buffer, 0, buffer.Length);
                while (count > 0)
                {
                    zipOutputStream.Write(buffer, 0, count);
                    count = fs.Read(buffer, 0, buffer.Length);
                    Response.Flush();
                }
                fs.Close();
            }

            zipOutputStream.Close();
            Response.Flush();
            HttpContext.Current.ApplicationInstance.CompleteRequest();
    }

0 个答案:

没有答案