Wielki odpowiedź tutaj wyjaśnia, jak w Ruby, aby pobrać plik bez załadowanie go do pamięci:Jak sprawdzić, IO.copy_stream powiodła
https://stackoverflow.com/a/29743394/4852737
require 'open-uri'
download = open('http://example.com/image.png')
IO.copy_stream(download, '~/image.png')
Jak chciałbym sprawdzić, czy Wywołanie IO.copy_stream, aby pobrać plik, faktycznie zakończyło się sukcesem - co oznacza, że pobrany plik jest dokładnie tym samym plikiem, który zamierzałem pobrać, a nie pobranym do połowy uszkodzonym plikiem? documentation mówi, że IO.copy_stream zwraca liczbę bajtów, które skopiował, ale skąd mogę wiedzieć, ile bajtów oczekuje, gdy jeszcze nie pobrałem pliku?
Co oznacza dla ciebie sukces? Czy odpowiednia liczba bajtów znajduje się na dysku? Czy plik jest prawidłowym plikiem tego typu? Coś innego? –
@DaveSchweisguth Przepraszam, że myślałem, że to by było zrozumiałe. To, że pobrany plik jest dokładną kopią pliku pod adresem URL. Automatycznie pomyślałem cksum, ale wiem, że to nie jest możliwe. Więc może jedyną opcją jest sprawdzenie, czy rozmiar plików jest zgodny? – joshweir
Powinieneś być ostrożny: serwery nie muszą zwracać "Content-Length" w nagłówkach. –