首页 > 解决方案 > ZipArchive 在来自 web 服务的列表中创建无效的 zip 文件

问题描述

我在获取压缩文件时遇到问题。

Web 服务为我提供了正确的文件,例如 www.XYP.com/GetFile?=1234 ,当我打开 URL 时,会自动下载文件,但是在我压缩此文档后,它的文件不正确,这些文件被破坏

我的代码在这里:

private void CreatedZipFile(Dictionary<int, string> listChecked)
{
    using (MemoryStream memoryStream = new MemoryStream())
    {
        using (ZipArchive archive = new ZipArchive(memoryStream, ZipArchiveMode.Create, true))
        {
            foreach (KeyValuePair<int, string> kvp in listChecked)
            {
                ZipArchiveEntry demoFile = archive.CreateEntry(kvp.Key.ToString() + kvp.Value.ToString() + ".pdf");  
                string strDownLoad = System.Configuration.ConfigurationManager.AppSettings["GETFILESERVICES"] + kvp.Key.ToString();

                WebService control = new WebService();

                var clientnew = new System.Net.WebClient().DownloadData(strDownLoad);

                using (var entryStream = demoFile.Open())
                {
                    using (StreamWriter streamWriter = new StreamWriter(entryStream))
                    {
                        streamWriter.BaseStream.Write(clientnew, 0, clientnew.Length);
                        streamWriter.Close();
                    }
                }
            }
        }
        byte[] bytesInStream = memoryStream.ToArray();

        Response.ContentType = "application/zip";
        Response.AddHeader("content-disposition", "attachment; filename=file.zip");
        Response.Buffer = true;

        Response.Clear();

        Response.BinaryWrite(bytesInStream);
        Response.Flush();
        //MemoryStream.WriteTo(Response.OutputStream); //works too
        Response.End();
    }
}

感谢您的帮助或任何建议,

标签: c#listfileweb-serviceszip

解决方案


推荐阅读