2011-01-28 1 views
9

È possibile recuperare un'immagine tramite url utilizzando PaperClip? È possibile con fleximage, ma fleximage non ha supporto per Rails3, quindi ho passato a paperclip.Paperclip fetch image direttamente tramite l'url

Allo stato attuale, sto recuperando l'immagine tramite l'arricciatura, salvandola sull'HDD e caricandola tramite image_file di paperclip.

Non ho trovato alcuna soluzione reale tramite Google, quindi spero che tu possa aiutarmi.

+0

Si sta utilizzando 'fetch' per indicare 'caricamento'. La domanda sarebbe molto più chiara se dovessi chiarire che intendi "caricare" e non "scaricare". Alcune risposte presuppongono che tu stia chiedendo come scaricare. –

risposta

1

Il metodo <modelname>.<attachmentname>.url non fa ciò che stai cercando?

In altre parole, se il modello si chiama Foo, e si mise a has_attached_file :bar poi foo.bar.url dovrebbe dare l'URL della tua immagine, che si può mettere in un image_tag o un link_to o quello che volete.

Potrebbe chiarire cosa intendi se questo non è quello che stai cercando?

12

Sì, questo è possibile e sorprendentemente semplice.

nel modello:

#we use this to get the image. 
require 'rest-open-uri' 
Class Model << ActiveRecord::Base 
has_attached_file :picture 

#Get the picture from a given url. 
def picture_from_url(url) 
    self.picture = open(url) 
end 

E allora si può fare qualcosa di simile:

#controller 
@model.picture_from_url(<Your URL here>) 

E poiché abbiamo salvato l'immagine con il resto dell'oggetto. Puoi semplicemente usarlo nelle tue visualizzazioni:

<%= image_tag @model.picture.url %> 

Spero che questo aiuti!

+0

Ma è anche possibile scaricare un'immagine dall'URL dato per avere un file indipendente sul proprio server? – mrmnmly

+0

Questo crea un file indipendente sul proprio server. L'unica differenza con una forma multipart è che il flusso di dati proviene da un'altra fonte (ad esempio url in questo caso). I post processers di Paperclip eseguiranno il kick in e ridimensioneranno e salveranno le immagini –