WCF返回“;“动态”;gzipstream

WCF返回“;“动态”;gzipstream,wcf,stream,Wcf,Stream,我需要创建一个服务,返回由一个或多个文件组成的GZipStream。文件数量可能有数百个,每个文件可能占用超过500MB的空间 在传输流时,是否可以将文件动态添加到gzipstream?(避免在需要将文件复制到流中时遇到内存不足异常) 等等: 将fileA复制到要返回的流 客户端开始读取流 读取文件A(客户端)后,将文件B复制到流(服务器端) 客户端继续读取流 。。。等等,直到没有更多的文件 顺便说一句,压缩文件并不重要,只需要将它们组合成一个zip文件,这样客户端只需下载一个文件 因此,我的目

我需要创建一个服务,返回由一个或多个文件组成的GZipStream。文件数量可能有数百个,每个文件可能占用超过500MB的空间

在传输流时,是否可以将文件动态添加到gzipstream?(避免在需要将文件复制到流中时遇到内存不足异常)

等等:

  • 将fileA复制到要返回的流
  • 客户端开始读取流
  • 读取文件A(客户端)后,将文件B复制到流(服务器端)
  • 客户端继续读取流
  • 。。。等等,直到没有更多的文件

    顺便说一句,压缩文件并不重要,只需要将它们组合成一个zip文件,这样客户端只需下载一个文件

    因此,我的目标是:将多个文件作为一个文件流回到客户端,而不在服务器上同时处理所有文件(以避免将所有文件加载到内存中,从而引发内存不足异常)

    这可以通过创建一个自定义流来实现吗?或者有更简单的方法吗


    谢谢。

    您可以将这些文件合并到磁盘上的单个zip文件中,然后将该文件流式传输回去

    有关如何将文件组合到zip文件的信息,请参阅:


    这解决了内存不足的问题,但这确实意味着您需要大量的磁盘空间。

    在磁盘上临时创建zip似乎是一种方法。。。谢谢