ruby で画像ファイルを curl POST する際のテンプレートの一つとしてメモ。
curl_post.rb
require 'net/https'
require 'uri'
require 'open-uri'
file = open('path/to/image.jpg').read
url = URI.parse('https://url.co.jp')
data = [
['file', file, filename: file_name]
]
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
req = Net::HTTP::Post.new(url.path)
req.set_form(data, "multipart/form-data")
http.request(req)
ポイントは set_form_data
ではなく set_form
を用いること。
画像ファイルという特性上multipart/form-data
が扱え、Rubyの標準ライブラリであるnet/http
を用いてPOSTできるようになる。