如何在Ruby中只在内存中创建zip文件?[英] How to create zip file only in memory in ruby?

本文是小编为大家收集整理的关于如何在Ruby中只在内存中创建zip文件?的处理方法,想解了如何在Ruby中只在内存中创建zip文件?的问题怎么解决?如何在Ruby中只在内存中创建zip文件?问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我想在给定目录中创建一个包含所有 HTML 文件的 zip 文件.zip 将与目录中的其余文件一起作为附件通过电子邮件发送.到目前为止,如果我从小马发送任何附件是 HTML 文件,我尝试的所有电子邮件客户端都无法阅读电子邮件.所以我想我会把它们拉上拉链.

有什么方法可以压缩 HTML 动态文件,但实际上只在内存中,而不使用任何临时文件Windows 平台?最好不要使用任何外部程序?

如果我理解正确,这两种方法都描述在:

正在使用某种临时文件.

推荐答案

起初我以为你可以使用 StringIO 对象来写入,但看起来 ZipOutputStream 类坚持要打开一个临时文件.

如果您不介意调用外部程序,可以通过使用"-"而不是文件名来告诉标准 linux zip 将 otuput 发送到 stdout 而不是文件.所以只需将输出收集到一个变量中,然后对它做任何你喜欢的事情.

zipdata = %x(zip -q - *.html)

我认为这不会比仅使用临时文件提高效率,但您必须对其进行测量才能确定.

本文地址:https://www.itbaoku.cn/post/786339.html