2017-03-03 2 views
1

Dans Ruby:cristal lang comment obtenir le fichier binaire à partir de http

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

Comment faire la même chose à Crystal?

+0

Tellement moins d'effort n'est pas un bon début pour cette communauté. – ckruczek

+0

J'ai passé assez de temps googling sans résultat – SeventhSon

+0

https://crystal-lang.org/api/0.21.0/HTTP/WebSocket/Protocol/StreamIO.html donne 404 – SeventhSon

Répondre

1

Je l'ai fait moi-même.

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

Merci à tous.

+0

Bien sûr, vous devriez préférer la forme de bloc de 'File.open '. –

6

Nous pouvons faire ce qui suit:

require "http/client" 

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

Cela écrit simplement la réponse sans en-têtes HTTP dans le fichier. File.write est également assez intelligent pour ne pas télécharger le fichier entier en mémoire d'abord, mais pour écrire dans le fichier comme il lit des morceaux à partir du IO donné.

+0

Merci John, ça marche, mais sans http-headers – SeventhSon