2013-01-04 19 views
2

出于纯粹的好奇,我使用的是以下行的文件上传到西纳特拉应用:红宝石上传文件与非libcurl库为

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

它是这样工作的魅力。但是,如果我想使用像HTTPClient这样的纯红宝石解决方案,那么获得相同结果的代码是什么?你可以给我一个例子吗?

备注:我对libcurl相关解决方案不感兴趣。如果还有其他的宝石,除了HTTPClient那可以实现这个纯红宝石请分享。

问候

+0

这个问题可能会让你感兴趣:http://stackoverflow.com/questions/12097491/uploading-a-file-using-ruby-nethttp-api-to-a-remote-apache-server-failing-with – quandrum

+1

各种Ruby HTTP客户端的文档展示了如何做这些事情。你读过他们检查吗? –

+0

是的,我没有找到任何与真实世界的例子@theTinMan –

回答

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哈希,你应该对你的方式。

+0

真相我已经尝试过类似的代码,但不工作...无论如何,出现404错误。无论如何感谢您的时间。 –