如何使用Ruby通过HTTP下载文件?

26

如何使用Ruby通过HTTP下载文件?

5个回答

25

可能是下载文件的最短路径:

require 'open-uri'
download = open('http://example.com/download.pdf')
IO.copy_stream(download, '~/my_file.pdf')

1
谢谢@Clemens,这个解决方案非常有效。你可以考虑在这里也回答一下:https://dev59.com/anE95IYBdhLWcg3wi-ie - Gabe Kopley
3
无法与较新版本的Ruby一起使用。请改用URI.open代替open - Michael

13
require 'net/http'
#part of base library
Net::HTTP.start("your.webhost.com") { |http|
  resp = http.get("/yourfile.xml")
  open("yourfile.xml", "wb") { |file|
    file.write(resp.body)
  }
}

12

您可以使用一行代码的 open-uri。

require 'open-uri'

content = open('http://example.com').read

6

Simple...

response = Net::HTTP.get_response(URI.parse("yourURI"))

5

有几种方法可供选择,但最简单的可能是使用OpenURI这篇博客文章提供了一些示例代码,并介绍了Net::HTTP(与Hpricot)和Rio。


最简单,也是最危险的。OpenURI修补了Kernel#open,如果任何用户输入接近您即将打开的字符串,则打开了读取系统上任何文件和远程代码执行的大门。 - haslo
您可以考虑此评论以获取更多信息。引用:“请注意,除非您可以确定URL不可能被恶意制作(例如通过用户输入),否则像content = URI.parse('http://your_url.com').read这样的操作更安全。请参阅http://docs.rubocop.org/rubocop/cops_security.html#securityopen”。 - sb813322

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接