如何使用 open-uri 或 paperclip 将图像下载到数据库并将它们提供给 Rest API

How to use open-uri or paperclip to download images into database and feed them to a Rest API

我正在开发一个数据集成应用程序,它需要从一个 API(使用 XML 的 url)和 post 获取图像到 rails 构建 REST API。

我尝试使用回形针下载所有图像,但是在尝试使用 HTTMultiParty post 图像时不知道如何处理 Paperclip::Attachment 类型。

我正在考虑使用 open-uri 而不是将文件存储为二进制文件的回形针。谁能给我举个例子吗?除了 httmultiparty 之外,还有什么好的选择可以将图像 post 转换为 API。

这个问题还是自己来回答比较好,因为解决方法是多种多样的。

所以通过 api 可以通过 httparty(下载和上传文本)+paperclip(通过 url 下载图像)+httmultiparty(上传图像)来完成图像获取和馈送,这里是一些代码示例 I在我的应用程序中使用。

对我来说,httparty 是处理 api 最简单的方法,代码可以像这样轻松完成:

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

回形针的代码示例在这里:answer on stack over flow

重要的部分是将回形针图像解析为二进制文件,代码如下:

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

最后一个示例是 HTTmultiparty,当您传递一个带有文件实例的查询作为 PUT 或 POST 请求的值时,包装器将使用一些魔法和 multipart-post 执行分段上传,除此之外它与 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)
                        })

希望这对其他 api 新手有所帮助。