如何在ruby中只在内存中创建zip文件



我想创建一个包含给定目录中所有HTML文件的zip文件。zip将作为附件通过电子邮件与目录中的其他文件一起发送。到目前为止,我尝试过的所有电子邮件客户端都很难阅读电子邮件,如果附件是HTML文件,如果我从pony发送的话。所以我想把它们拉上拉链。

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

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

  • http://info.michael-simons.eu/2008/01/21/using-rubyzip-to-create-zip-files-on-the-fly/或
  • http://rubyzip.sourceforge.net/classes/Zip/ZipFile.html

正在使用某种临时文件。

一开始我想也许可以使用StringIO对象进行写入,但看起来ZipOutputStream类坚持打开一个临时文件。

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

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

我不认为这会比仅仅使用临时文件提高效率,但你必须衡量一下才能确定。

相关内容

  • 没有找到相关文章

最新更新