Eine große Antwort hier erklärt, wie, in Ruby, eine Datei herunterzuladen, ohne sie in den Speicher zu laden:Wie zu überprüfen, ob IO.copy_stream erfolgreich war
https://stackoverflow.com/a/29743394/4852737
require 'open-uri'
download = open('http://example.com/image.png')
IO.copy_stream(download, '~/image.png')
Wie würde ich überprüfen, ob die IO.copy_stream Aufruf zum Download der Datei war tatsächlich erfolgreich - was bedeutet, dass die heruntergeladene Datei ist genau die gleiche Datei, die ich herunterladen wollte, nicht eine Hälfte heruntergeladene beschädigte Datei? Die documentation besagt, dass IO.copy_stream die Anzahl der Bytes, die es kopiert hat, zurückgibt, aber wie kann ich die Anzahl der erwarteten Bytes wissen, wenn ich die Datei noch nicht heruntergeladen habe?
Was bedeutet Erfolg für Sie? Dass die richtige Anzahl von Bytes auf der Festplatte ist? Dass die Datei eine gültige Datei ihres Typs ist? Etwas anderes? –
@DaveSchweisguth Sorry, ich dachte, es wäre selbsterklärend. Dass die heruntergeladene Datei eine exakte Kopie der Datei an der URL ist. Ich würde automatisch denken, aber ich weiß, dass das nicht möglich ist. Vielleicht ist die einzige Möglichkeit zu überprüfen, ob die Größe der Dateien übereinstimmt? – joshweir
Sie sollten hier vorsichtig sein: Server müssen nicht 'Content-Length' in den Headern zurückgeben. –