2016-03-22 1 views
0

Ich arbeite an einer Datenintegrations-App, die Bilder von einer API (mit XML-URLs) abrufen und die Bilder auf ein a Schienen gebaut REST API.Wie Open-Uri oder Büroklammer zu verwenden, um Bilder in Datenbank herunterladen und sie zu einem Rest-API Feed

Ich versuchte Büroklammer, um alle Bilder herunterladen, aber nicht wissen, wie Sie den Paperclip :: Attachment-Typ zu behandeln, wenn Sie versuchen, die Bilder mit HTTMultiParty zu buchen.

Ich denke über die Verwendung von Open-URI anstelle von Büroklammer, die Datei in Binärdatei speichern wird. Kann mir jemand dazu ein Beispiel geben? Und gibt es neben httmultiparty eine gute Möglichkeit, ein Image in API zu posten?

+0

"Ich denke über die Verwendung von Open-Uri anstelle von Büroklammer, die Datei in binäre speichern wird. Kann mir jemand ein Beispiel dafür geben?" > http://stackoverflow.com/questions/1074309/how-do-i-download-a-picture-using-ruby – orde

Antwort

0

Es ist besser, diese Frage selbst zu beantworten, weil die Lösung variiert werden kann.

So Bild holen und durchschlagen api kann durch httparty (Download & Upload Text) + Büroklammer (Download Bild von url) + httmultiparty (upload Bild), hier sind einige Code-Beispiel, das ich in meiner Anwendung verwenden erfolgen.

Für mich httparty einfachste Weg, mit api umgehen, können Codes leicht wie folgt erfolgen:

response = HTTParty.get('url') 
response = HTTParty.post('url', 
         :headers => 'head content', 
         :body => {'data':'data content'}) 

Codebeispiel auf Büroklammer ist hier: answer on stack over flow

Der wichtige Teil der Büroklammer ist das Parsen Bild in binäre Datei, Code geht:

Paperclip.io_adapters.for(productData[0].image).read 

Das letzte Beispiel ist HTTmultiparty, Wenn Sie eine Abfrage mit einer Instanz einer Datei als Wert für einen PUT oder POST r passieren equest, wird die Umhüllung ein wenig Magie verwenden und mehrt-post mehrt Upload auszuführen, abgesehen davon, dass es so ziemlich die gleichen wie httparty ist:

class ImgClient 
    include HTTMultiParty 
    base_uri 'http://localhost:3000' 
end 
respond = ImgClient.post('url', 
         :headers => head, 
         :query => { 
          :image => Paperclip.io_adapters.for(product.image) 
         }) 

hoffen, dass dies für andere api Neulinge hilfreich sein.

Verwandte Themen