使用非libcurl库的Ruby上载文件

使用非libcurl库的Ruby上载文件,ruby,sinatra,httpclient,Ruby,Sinatra,Httpclient,出于好奇,我使用下面这行代码将文件上传到Sinatra应用程序: curl -silent --location --upload-file #{file} http://0.0.0.0:3000/sent/ 它很有魅力。然而,如果我想使用一个纯ruby解决方案,比如,那么代码会是什么来获得相同的结果呢?你能给我举个例子吗 注意:我对libcurl相关解决方案不感兴趣。如果除了HTTPClient之外还有另外一个gem可以在纯ruby中实现这一点,请分享 最诚挚的问候Ruby允许您上传文件。从

出于好奇,我使用下面这行代码将文件上传到Sinatra应用程序:

curl -silent --location --upload-file #{file} http://0.0.0.0:3000/sent/
它很有魅力。然而,如果我想使用一个纯ruby解决方案,比如,那么代码会是什么来获得相同的结果呢?你能给我举个例子吗

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

最诚挚的问候

Ruby允许您上传文件。从文件中:

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\u form\u data
散列中,您就可以开始了。

您可能会对这个问题感兴趣:各种Ruby HTTP客户端的文档介绍了如何做这些事情。你读过了吗?是的,我没有找到任何关于真实世界的例子@ThetinContruth我已经尝试过类似的代码但不起作用。。。无论如何都会出现404错误。无论如何,谢谢你抽出时间。