c# - 压缩文件时限制内存使用

标签 c# asp.net .net

我目前使用 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/

相关文章:

c# - & 符号被 HTML 编码为 &。有什么办法可以防止这种情况?

c# - 使用 Fileupoad 控件和 sqldatasource 保存图像文件

c# - 禁用 CheckboxList 中的特定项目

c# - 使用 DataGrid/GridView 控件表示分层数据

asp.net - 与开发服务器(Cassini)相比,IIS 中的 RegEx.Match 慢得多?

c# - 一个对象怎么能不和null比较呢?

c# - C#中的"using "关键字,在java中如何使用?

c# - 这个 IntPtr 是否指向分配的非托管内存?

c# - 文件输入和输出

c# - 在递归调用中使用 lock(obj)