2016-03-22 4 views
0

Je travaille sur une application d'intégration de données qui a besoin de récupérer des images à partir d'une API (XML) et de publier les images rails construit API REST.Comment utiliser open-uri ou trombone pour télécharger des images dans une base de données et les alimenter à une API de repos

J'ai essayé trombone pour télécharger toutes les images mais je ne sais pas comment gérer le type Paperclip :: Attachment lorsque vous essayez de publier les images avec HTTMultiParty.

Je pense à utiliser open-uri au lieu de trombone qui va stocker le fichier en binaire. Quelqu'un peut-il me donner un exemple à ce sujet? Et y a-t-il une bonne option pour publier une image sur l'API en dehors de httmultiparty?

+0

"Je pense à utiliser open-uri au lieu de trombone qui va stocker le fichier en binaire.Quelqu'un peut-il me donner un exemple à ce sujet?" > http://stackoverflow.com/questions/1074309/how-do-i-download-a-picture-using-ruby – orde

Répondre

0

Il est préférable de répondre à cette question moi-même car la solution peut être variée.

Donc l'image chercher et nourrir via api peut être fait par httparty (télécharger & télécharger le texte) + trombone (télécharger l'image par l'URL) + httmultiparty (télécharger l'image), voici un exemple de code que j'utilise dans mon application.

Pour moi, httparty est moyen le plus facile à traiter api, les codes peuvent se faire facilement comme ceci:

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

Exemple de code sur paperclip est ici: answer on stack over flow

La partie importante est l'analyse du paperclip image fichier binaire, le code passe:

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

Le dernier exemple est HTTmultiparty, Lorsque vous passez une requête avec une instance d'un fichier en tant que valeur pour un PUT ou POST r eQuest, l'emballage utilisera un peu de magie et multipart post pour exécuter un téléchargement multipart, à part qu'il est à peu près la même chose que httparty:

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

espère que ce sera utile pour les autres débutants api.