【问题标题】:Crystal lang how to get binary file from httpCrystal lang如何从http获取二进制文件
【发布时间】:2017-03-03 13:31:30
【问题描述】:

在 Ruby 中:

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

如何在 Crystal 中做同样的事情?

【问题讨论】:

标签: http binary crystal-lang


【解决方案1】:

我们可以做到以下几点:

require "http/client"

HTTP::Client.get("http://example.org") do |response|
  File.write("example.com.html", response.body_io)
end

这只会将没有任何 HTTP 标头的响应写入文件。 File.write 也很聪明,不会先将整个文件下载到内存中,而是在从给定的IO 读取块时写入文件。

【讨论】:

  • 感谢约翰,它正在工作,但没有 http-headers
【解决方案2】:

我发现了一些有用的东西:

require "http/request"
require "file"
res = HTTP::Client.get "https://ya.ru"
fl=File.open("ya.html","wb")
res.to_io(fl)
fl.close

【讨论】:

  • 当然你应该更喜欢File.open的块形式。
猜你喜欢
  • 2020-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-19
  • 1970-01-01
  • 2013-05-28
相关资源
最近更新 更多