我需要创建一个服务,它返回一个由一个或多个文件组成的 GZipStream。文件数量可能有数百个,每个文件可能占用超过 500MB。
是否可以在传输流时以某种方式将文件动态添加到 gzipstream 中?(以避免在需要将文件复制到流中时遇到内存不足异常)
ETC:
- 将 fileA 复制到正在返回的流中。
- 客户端开始读取流。
- 读取 fileA 后(客户端),将 fileB 复制到流(服务器端)。
- 客户端继续读取流。
...依此类推,直到没有更多文件为止。
顺便提一句。压缩文件并不重要,只需将它们组合成一个 zip 文件,这样客户端只需下载一个文件即可。
所以我的目标是:将多个文件作为一个文件流回客户端,而不在服务器上一次处理所有文件(以避免将所有文件加载到内存中,从而引发内存不足异常)。
这可以通过以某种方式创建自定义流来完成,还是有更简单的方法?
谢谢。