【问题标题】:Ruby upload files with a non libcurl libraryRuby 使用非 libcurl 库上传文件
【发布时间】:2013-01-05 02:30:56
【问题描述】:

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

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

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

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

最好的问候

【问题讨论】:

  • 这个问题你可能会感兴趣:stackoverflow.com/questions/12097491/…
  • 各种 Ruby HTTP 客户端的文档展示了如何做这些事情。您是否通读了它们以进行检查?
  • 是的,我没有找到任何与真实世界的例子@theTinMan

标签: ruby sinatra httpclient


【解决方案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 哈希中,您应该就可以了。

【讨论】:

  • 真相我已经尝试过类似的代码,但不起作用......无论如何都会出现404错误。无论如何,感谢您的宝贵时间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多