Una grande risposta qui spiega come, in Ruby, per scaricare un file senza caricarla in memoria:Come verificare che IO.copy_stream ha avuto successo
https://stackoverflow.com/a/29743394/4852737
require 'open-uri'
download = open('http://example.com/image.png')
IO.copy_stream(download, '~/image.png')
Come faccio a verificare che il La chiamata a IO.copy_stream per scaricare il file è stata effettivamente efficace, il che significa che il file scaricato è lo stesso file che avevo intenzione di scaricare, non un file corrotto scaricato a metà? Il documentation dice che IO.copy_stream restituisce il numero di byte che ha copiato, ma come posso sapere il numero di byte previsti quando non ho ancora scaricato il file?
Che cosa significa per te il successo? Che il numero giusto di byte sono sul disco? Che il file è un file valido del suo tipo? Qualcos'altro? –
@DaveSchweisguth Scusa ho pensato che sarebbe stato di per sé esplicativo. Che il file scaricato sia una copia esatta del file nell'URL. Penserei automaticamente cksum ma so che non è possibile. Quindi forse l'unica opzione è verificare che la dimensione dei file corrisponda? – joshweir
Qui dovresti fare attenzione: i server non sono tenuti a restituire "Content-Length" nelle intestazioni. –