我目前使用 ionic 来压缩一些照片,然后将它们发送给浏览器上的用户。本质上是这样的。
using (ZipFile zipFile = new ZipFile())
{
byte[] data = client.DownloadData("photo.png");
zipFile.AddEntry("photo.png", data);
Response.ClearContent();
Response.ClearHeaders();
Response.AppendHeader("content-disposition", "attachment; filename=Media.zip");
zipFile.Save(Response.OutputStream);
}
但是有时会有很多照片达到 15 MB,而且数量很多。
因为这样的内存被完全使用并且在它可以完成创建 zip 文件之前就用完了。有没有一种方法可以在不使用如此大量内存的情况下完成压缩文件并将它们发送给用户?也许完全不同的方法?
最佳答案
在我看来你最好将文件写入某个地方的磁盘(或数据库),最好是以流的方式......然后给客户端一个允许下载文件的链接 - 再次,以流媒体的方式。基本上,尽量避免在任何时候都要求将完整的文件保存在内存中。
关于c# - 压缩文件时限制内存使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12643159/