使用Ionic.Zip c#即时压缩

时间:2013-04-18 14:48:36

标签: c# zip

我正在尝试从流创建一个zip文件并返回一个流,我的问题是我不想将任何数据存储在本地硬盘或内存中。我正在使用Ionic.Zip图书馆

        Stream output = new MemoryStream();
        using (ZipFile zip = new ZipFile())
        {
            Stream s = ftpManager.GetFileStream("/mydoc.docx");
            ZipEntry e = zip.AddEntry("Content-From-Stream.bin", s);
            e.Comment = "The content for entry in the zip file was obtained from a stream";
            //zip.AddFile("Readme.txt");
            zip.Save(output);
        }
        if (output != null)
        {
            ftpManager.Upload(output, "/MohamedTest/mydoc.zip");
        }

该代码存在许多问题,

  • 首先,我使用的是不太喜欢的MemoryStream
  • 其次,压缩后压缩文件为空

任何建议

1 个答案:

答案 0 :(得分:1)

输出上的最有可能位置在压缩后设置为流的末尾,请检查此项。 并且,除非您将实现一些proxyfying流(它将处理.Write方法并将此数据发送到FTP),否则您需要内存/文件流来存储压缩数据。