2

まったくの好奇心から、次の行を使用してファイルを Sinatra アプリにアップロードしています。

curl -silent --location --upload-file #{file} http://0.0.0.0:3000/sent/

それは魅力のように機能します。ただし、 HTTPClientのような純粋な Ruby ソリューションを使用したい場合、同じ結果を得るコードは何でしょうか? 例を教えてください。

注: libcurl関連のソリューションには興味がありません。HTTPClientを除いて、純粋な Rubyでこれを実現できる別の gem がある場合は、共有してください。

よろしくお願いします

4

1 に答える 1

1

Ruby のNet::HTTPを使用すると、ファイルをアップロードできます。ドキュメントから:

uri = URI('http://www.example.com/todo.cgi')
req = Net::HTTP::Post.new(uri.path)
req.set_form_data('from' => '2005-01-01', 'to' => '2005-03-31')

res = Net::HTTP.start(uri.hostname, uri.port) do |http|
  http.request(req)
end

case res
when Net::HTTPSuccess, Net::HTTPRedirection
  # OK
else
  res.value
end

set_form_dataファイルの本文をハッシュに追加すると、すぐに使用できます。

于 2013-01-04T18:30:56.583 に答える