出于纯粹的好奇心,我使用以下行将文件上传到Sinatra应用程序:
curl -silent --location --upload-file #{file} http://0.0.0.0:3000/sent/
它就像魅力一样。但是,如果我想使用像HTTPClient这样的纯ruby解决方案,那么获得相同结果的代码是什么?你能举个例子吗?
注意:我对 libcurl 相关解决方案不感兴趣。如果还有另一个gem,除了 HTTPClient ,可以在纯ruby 中实现这一点,请分享。
最好的问候
答案 0 :(得分: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
哈希,您应该在路上。