2

出于纯粹的好奇,我使用以下行将文件上传到 Sinatra 应用程序:

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

它就像魅力一样。但是,如果我想使用像HTTPClient这样的纯 ruby​​ 解决方案,获得相同结果的代码是什么?能给我举个例子?

注意:我对libcurl相关的解决方案不感兴趣。如果还有其他 gem,除了HTTPClient可以在纯 ruby​​ 中实现这一点,请分享。

此致

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 回答