[英]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.