: Nasıl doğrulamak ediyorumIO.copy_stream başarılı olduğunu doğrulamak için nasıl
https://stackoverflow.com/a/29743394/4852737
require 'open-uri'
download = open('http://example.com/image.png')
IO.copy_stream(download, '~/image.png')
Dosyayı indirmek için IO.copy_stream çağrısı aslında başarılı oldu - yani indirilen dosyanın indirilen dosyayı indirmeye çalıştığım tam bir dosya değil, yarım indirilen bozuk dosya değil mi? documentation, IO.copy_stream dosyasının kopyaladığı bayt sayısını döndürdüğünü söylüyor ancak dosyayı henüz indirmediğimde beklenen bayt sayısını nasıl bilebilirim?
require 'open-uri'
download = open 'http://cdn.sstatic.net/stackoverflow/img/apple-touch-icon.png'
bytes_expected = download.meta['content-length']
bytes_copied = IO.copy_stream download, 'image.png'
if bytes_expected != bytes_copied
raise "Expected #{bytes_expected} bytes but got #{bytes_copied}"
end
O olacaktır: İçerik-Uzunluk başlığından beklenen bayt sayısını almak ve IO.copy_stream
dönüş değerine karşılaştırabilirsiniz böylece
Başarı sizin için ne anlama geliyor? Doğru sayıda bayt diskte mi? Bu dosya kendi türünde geçerli bir dosya mı? Başka bir şey? –
@DaveSchweisguth Üzgünüm Kendi kendini açıklayıcı olacağını düşündüm. İndirilen dosya, url'deki dosyanın tam bir kopyasıdır. Otomatik olarak cksum düşünürdüm ama bunun mümkün olmadığını biliyorum. Belki de tek seçenek dosyaların boyutunun eşleştiğini doğrulamaktır? – joshweir
Burada dikkatli olmalısınız: sunucuların başlıklarda 'İçerik Uzunluğu' değerini döndürmesi gerekmez. –