我想创建一个包含给定目录中所有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)
我不认为这会比仅仅使用临时文件提高效率,但你必须衡量一下才能确定。