簡體   English   中英

Rails-使用Faraday發送圖像

[英]Rails - Sending image using Faraday

我正在嘗試向API發送圖像和其他數據的請求,並獲取響應。 那是我的代碼:

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

我的第一個問題是,我總是遇到以下錯誤:

Errno::ENOENT (No such file or directory - assets/images/test.png)

我已經嘗試了所有我能想象的路徑。 該圖像應保存在法拉第要找到的目錄中的什么位置?

第二個問題是響應,如何獲得響應並進行處理?

第三個是,我不知道最后一次調用的第一個參數的用途是什么:

conn.post "/hello", payload

我已經寫了“ / hello”,但是對真正的用途一無所知。

還有最后一個。 我可以發送保存在變量中的原始圖像,而不是發送到法拉第的路徑嗎?

編輯

現在可以正常工作了,這是解決方案:請注意url必須僅直到.com為止,其余路徑必須在conn.post ,如此示例/v1/search c.adapter :net_http也需要。 消息響應已在json變量中正確處理。

解:

  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

您應該針對第一個問題嘗試以下操作:

file = Rails.root.to_s + "/app/assets/images/test.jpg"

對於第三個問題,第一個參數允許您從基本“ api_url”構建正確的URL。 請參閱自述文件中的示例。

## POST ##

conn.post '/nigiri', { :name => 'Maguro' }  # POST "name=maguro" to http://sushi.com/nigiri

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM