Comprimir un directorio a zip?

Hola gentes, para un proyecto necesito poder descargar todas las fotos
asociadas (attachment_fu) a un producto en un único fichero .zip que
las contenga a todas.

Hasta ahora tengo un método que coge todas las fotos de un producto y
las copia a una carpeta /public/zipped/id_producto

/public/zipped/id_producto/foto1.jpg
/public/zipped/id_producto/foto2.jpg
/public/zipped/id_producto/foto3.jpg

Ahora me gustaría comprimir esa carpeta para que se quede en
/public/zipped/id_producto.zip

Es importante que sea .zip y no .tar.gz, esto es, para que lo puedan
abrir esos usuarios de windows que previsiblemente visitarán la web.
:slight_smile:

Gracias!

Buenas,

El Thursday 20 March 2008 22:32:05 Jaime I.
escribió:> Hola gentes, para un proyecto necesito poder descargar todas las fotos

asociadas (attachment_fu) a un producto en un único fichero .zip que
las contenga a todas.
[…]

gem install rubyzip. No lo he usado pero leyendo la documentación parece
ser
lo que buscas.

Ciao

Jaime,

Se hace de la siguiente manera. (Con la gem rubyzip instalada)


require ‘rubygems’
require ‘zip/zip’
require ‘zip/zipfilesystem’

Zip::ZipFile.open(“producto_1.zip”, Zip::ZipFile::CREATE) do |zipfile|
zipfile.mkdir(“producto_1”)
zipfile.add(“producto_1/foto_1.jpg”, “foto_1.jpg”)
end


Funciona porque lo he probado … :wink:

Un saludo,

Francesc

On Mar 20, 2008, at 10:32 PM, Jaime I. wrote:

Jaime I.
http://jaimeiniesta.com - http://railes.net - http://pagerankalert.com


Ror-es mailing list
[email protected]
http://lists.simplelogica.net/mailman/listinfo/ror-es


Not sent from my iPhone

Yo lo haria “on demand” … y cacheandolo de manera que solo generaré
esos archivos que el usuario pida. Eso si, cuando el usuario actualize
el producto se debe descachear.

Un saludo,

Francesc

On Mar 21, 2008, at 10:23 AM, Jaime I. wrote:

2.- una rake task automatizada por cron para actualizar todos los zips

require ‘zip/zipfilesystem’


Ror-es mailing list
[email protected]
http://lists.simplelogica.net/mailman/listinfo/ror-es


Not sent from my iPhone

Gracias Antonio y Francesc…

Al final lo estoy haciendo con llamadas al sistema, para usar el zip
del servidor. ¿Qué creéis que es preferible? Creo que el zip de
sistema será más rápido que la gema, no?

Por otro lado, ¿dónde creéis que es mejor hacer este zip?

1.- “on demand” cuando el visitante pulse el enlace “descargar zip”

2.- una rake task automatizada por cron para actualizar todos los zips
y dejarlos preparados para descarga

3.- en el after_save del producto para que cuando se actualice desde
el back, se genere el nuevo zip

Yo creo que lo mejor es la 3; la 1 puede consumir muchos recursos y la
2 puede hacer trabajar al servidor innecesariamente y además tener los
zips desactualizados entre el cambio y la ejecución programada.

Jaime

2008/3/21, Francesc E. [email protected]:

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs