Как мне сгенерировать несколько изображений и поместить их в один zip-файл для загрузки с помощью Rails3? - PullRequest
3 голосов
/ 24 мая 2011

Я генерирую QR-коды из Google 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 свои встроенные методы сжатия?

Ответы [ 2 ]

5 голосов
/ 24 мая 2011

Во-первых, для каждого QR-кода используйте Net :: HTTP , чтобы загрузить изображение QR-кода из API Google во временный файл. Затем используйте rubyzip для сжатия временных файлов в zip-файл. Пример использования библиотеки zip здесь . Наконец, используйте send_data (или send_file, если вы записали его на диск), чтобы отправить этот сгенерированный zip-файл в веб-браузер клиента.

1 голос
/ 30 мая 2011

Проверьте мой модуль mod_zip для Nginx:

https://github.com/evanmiller/mod_zip

Вы можете динамически передавать ZIP-файл клиенту без каких-либо временных файлов.

...