2017-12-19 5 views
0

Der Versuch, eine ZIP-Datei mit vielen Bildern zu erstellen, mein Code ist wie folgt:erstellen zip von Büroklammer Attachments und downloaden

 compressed_filestream = Zip::OutputStream.write_buffer do |zos| 
     @pictures.each do |p| 
     image_url = p.picturefile.url(:original) 
     zos.put_next_entry p.picturefile_file_name 
     zos.print(URI.parse(image_url))  
     end 
    end 
    compressed_filestream.rewind 
    send_data compressed_filestream.read, filename: "pictures.zip" 

Diese eine pictures.zip Datei erstellt, aber es enthält nur den Text-URL Jedes Bild anstelle des eigentlichen Bildes ...

+0

Benötigen Sie den Pfad zur Datei anstelle der URL? – Kris

+1

Versuchen Sie, die Datei zu lesen und dann in zip zu schreiben. 'Paperclip.io_adapters.for (p.picturefile) .read'. – coderhs

Antwort

1

Im Moment übergeben Sie nur die URL des Bildes an die Datei. Was Sie tun müssen, ist den Zeileninhalt zu übergeben.

compressed_filestream = Zip::OutputStream.write_buffer do |zos| 
    @pictures.each do |p| 
    zos.put_next_entry p.picturefile_file_name 
    zos.print(Paperclip.io_adapters.for(p.picturefile).read)  
    end 
end 
compressed_filestream.rewind 
send_data compressed_filestream.read, filename: "pictures.zip" 
+0

funktioniert wie ein Charme, danke! – hso