如何生成多个图像并将它们放入一个 zip 文件中,以便使用 Rails3 下载



我正在我的网站上从谷歌的图表 API 生成二维码作为 URL,并传递一些参数。

我有大约 100 个从 URL 生成的代码,如下所示:

$= image_tag("http://chart.apis.google.com/chart?cht=qr&chl=#{qr.code}&chs=120x120&choe=UTF-8", :size => "120x120")

我想创建一个方法,循环遍历我的数组并生成 png 文件,然后将它们放在一个 zip 文件中,我可以一键下载。

我尝试使用send_data "url", :disposition = > "attachment", :type => "image/png"

这仅保存了URL,而不是生成的图像。将 URL 放入浏览器中会打开一个包含图像的窗口。

除此之外,我无法将所有文件添加到zip文件中。Rails 有自己的内置压缩方法吗?

首先,对于每个二维码,使用 Net::HTTP 将二维码的图像从谷歌的 API 下载到临时文件中。然后使用 rubyzip 将临时文件压缩为 zip 文件。 有关如何使用 zip 库的示例位于此处。最后,使用 send_data(如果已将其写入磁盘,则send_file)将此生成的 zip 文件发送到客户端的 Web 浏览器。

查看我的 Nginx mod_zip模块:

https://github.com/evanmiller/mod_zip

您可以将 ZIP 文件动态流式传输到客户端,而无需任何临时文件。

相关内容

  • 没有找到相关文章

最新更新