首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Faraday发送图像

使用Faraday发送图像
EN

Stack Overflow用户
提问于 2013-11-21 09:36:18
回答 1查看 1.3K关注 0票数 2

我试图向API发出请求,发送图像和其他数据,并获得响应。这是我的密码:

代码语言:javascript
复制
file = "assets/images/test.jpg"
conn = Faraday.new(:url => "api_url" ) do |faraday|
  faraday.request :multipart
end
payload = { :profile_pic => Faraday::UploadIO.new(file, 'image/jpeg') }
conn.post "/test", payload

我的第一个问题是,我总是得到以下错误:

代码语言:javascript
复制
Errno::ENOENT (No such file or directory - assets/images/test.png)

我已经试过了所有我能想到的路。应该将图像保存在法拉第要找到的目录中的哪里?

第二个问题是关于回应,我怎样才能得到回应和处理呢?

第三个问题是,我不知道上一次调用的第一个参数的效用是什么:

代码语言:javascript
复制
conn.post "/hello", payload

我写过"/hello“,但不知道什么是真正的用法。

最后一个。我可以发送保存在变量中的原始图像,而不是发送路径给Faraday吗?

编辑

现在它起作用了,这是解决方案:请注意,url必须只在.com之前,路径的其余部分必须像下面的示例/v1/search一样在conn.post上进行。c.adapter :net_http也是必需的。消息响应在json变量中得到正确处理。

解决方案:

代码语言:javascript
复制
  url = 'http://url.com'

  file = Rails.root.to_s + "/app/assets/images/test.jpg"
  conn = Faraday.new(:url => url ) do |c|
    c.request :multipart
    c.adapter :net_http
  end
  payload = { :image => Faraday::UploadIO.new(file, 'image/jpeg'), :token => token}

  response = conn.post '/v1/search', payload
  json = JSON.parse response.body
EN

回答 1

Stack Overflow用户

发布于 2013-11-21 11:59:41

对于你的第一个问题,你应该试试这个:

代码语言:javascript
复制
file = Rails.root.to_s + "/app/assets/images/test.jpg"

对于第三个问题,第一个参数允许您从基"api_url“构造正确的URL。请参阅自述中的示例。

代码语言:javascript
复制
## POST ##

conn.post '/nigiri', { :name => 'Maguro' }  # POST "name=maguro" to http://sushi.com/nigiri
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20117196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档