2010-10-14 3 views
9

Ich benutze die Paperclip-Juwel, um die Größe der Upload-Fotos und speichern Sie sie auf Amazon S3. Ich benötige Zugriff auf das Foto in der Größe, das während des Lebenszyklus der Upload-Anfrage auch an einen anderen Web-Service weitergeleitet wird.Zugang zu PaperClip Temp-Datei bei Verwendung von s3 Speicheroption auf Heroku

Ich vermute, es gibt eine temporäre Datei erstellt irgendwo das Bildmagik verwendet, bevor das Foto auf s3 hochgeladen wird. Wie kann ich darauf zugreifen?

Antwort

13

Laut Paperclip readme gibt es ein paar Callbacks, die nach und vor der Verarbeitung aufgerufen werden.

Für jeden attachment:

  • before_post_process
  • after_post_process

Nur für einen spezifischen attachment:

  • before_ [attachment] _post_process
  • after_ [attachment] _post_process

Ich denke, in Ihrem Fall, dass Sie eine der after Rückrufe verwenden sollte das verkleinerte Bild zu erhalten. Dann sollten Sie in der Lage sein, auf die Datei mit queued_for_write zuzugreifen. Zum Beispiel:

class MyModel < ActiveRecord::Base 
    has_attached_file :photo, :styles => { :small => "300x300>" } 
    after_post_process :send_photo 

    private 
    def send_photo 
    path = photo.queued_for_write[:small].path 
    # upload the photo to the ws here 
    end 

end 
+1

Danke Matt, das sieht aus wie ich gesucht habe. Das Stück, das ich vermisst habe, war die queue_for_write-Methode. Ich werde es morgen versuchen und zurück melden. –

+0

Perfekt gearbeitet. Vielen Dank! –

Verwandte Themen