2010-10-14 10 views
9

Sto usando la gemma Paperclip per ridimensionare le foto di caricamento e memorizzarle su Amazon S3. Ho bisogno di accedere alla foto ridimensionata per passare anche a un altro servizio web, durante il ciclo di vita della richiesta di upload.Accesso al file temp graffatura quando si utilizza l'opzione di archiviazione s3 su heroku

Sospetto che ci sia un file temporaneo creato da qualche parte in cui l'imagemagik viene utilizzato prima che la foto venga caricata su s3. Come posso accedervi.

risposta

13

Secondo Paperclip readme ci sono alcune richiamate che chiama dopo e prima dell'elaborazione.

Per ogni allegato:

  • before_post_process
  • after_post_process

Solo per un attacco specifico:

  • before_ [allegato] _post_process
  • after_ [ALLEGATO] _post_process

penso che nel tuo caso è necessario utilizzare uno dei after callback per ottenere la foto ridimensionata. Quindi dovresti essere in grado di accedere al file con queued_for_write. Ad esempio:

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

Grazie Matt, questo sembra quello che stavo cercando. Il pezzo che ho trovato mancante era il metodo queued_for_write. Domani farò un tentativo e riferirò. –

+0

ha funzionato perfettamente. Grazie! –

Problemi correlati