我想从流中创建一个zip文件并返回一个流,我的问题是我不想将任何数据存储在本地硬盘中或记忆。我使用Ionic.Zip
图书馆使用Ionic.Zip进行动态压缩c#
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这是不可取的
- 二,压缩文件是经过压缩
任何建议
我很好奇,为什么downvote?这似乎是一个很好的合理的问题 – Steve
你的内存/磁盘空间问题不能简单地解决。为了将文件上传到ftp,您需要知道它的大小(使用FtpWebRequest,在上传文件之前需要设置内容大小)。压缩文件的大小只有在存档完全压缩后才能知道。您获得的唯一选择是内存和磁盘空间使用情况。 –
@KamilKrasinski我认为我可以从流中获取文件大小,因为我已经对压缩文件进行了流式处理,但问题是由于大文件而导致该流在内存中存储。我想避免这样的事情 –