ruby - 如何使用 Rails3 生成多个图像并将它们放入一个 zip 文件以供下载?

标签 ruby image ruby-on-rails-3 download zip

我在我的网站上从 Google 的图表 API 生成 QR 代码作为一个 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从 Google 的 API 下载二维码图像到一个临时文件中。然后使用 rubyzip将临时文件压缩成 zip 文件。如何使用 zip 库的示例是 here .最后,使用 send_data(或 send_file,如果您已将其写入磁盘)将此生成的 zip 文件发送到客户端的网络浏览器。

关于ruby - 如何使用 Rails3 生成多个图像并将它们放入一个 zip 文件以供下载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6105663/

相关文章:

ruby - 如何获取数组中重复次数最少的数字?

ruby - ruby --dump 中显示的信息在运行时是否可用?

ruby - 在每天不同的时间设置一个 Whenever 作业

图像优化,如 TinyPNG

Javascript:如何将 Javascript 图像链接到页面?

ruby-on-rails - 如何从另一个目录中获取 ruby​​ 文件

ruby-on-rails - Ruby On Rails - 保护下载区域

ruby - @app.call(env) 到底做了什么?

image - 将纹理文件包含到 collada 文件中

ruby-on-rails-3 - Roo 错误。任何解析 .ods 文件的 gem