Qualcuno sa di come ottenere un aggiornamento di stato dalla libreria Net :: FTP di Ruby durante il download di un file? Sto cercando di implementare un'interfaccia web che mostra una barra di avanzamento per la percentuale rimanente durante il download di un file da un server FTP remoto.Ruby Net :: Barra di avanzamento FTP
10
A
risposta
34
Per riferimento futuro - mi sono imbattuto su una soluzione:
filesize = ftp.size(filename)
transferred = 0
p "Beginning download, file size: #{filesize}"
ftp.getbinaryfile(filename, "#{SOURCE_IMPORT_DIRECTORY}/#{filename}", 1024) { |data|
transferred += data.size
percent_finished = ((transferred).to_f/filesize.to_f)*100
p "#{percent_finished.round}% complete"
}
ftp.close
0
ho costruito su di @ smnirven eccellente approccio per un po 'il progresso meno rumoroso con 100-dot progressione:
filesize = ftp.size(filename)
transferred = 0
notified = false
ftp.getbinaryfile(filename, full_local_path, 1024) do |data|
transferred += data.size
percent_finished = (((transferred).to_f/filesize.to_f)*100)
if percent_finished.to_s.include?('.0')
print "." if notified == false
notified = true
else
notified = false
end
end
ftp.close
uscita:
[progress] Downloading CBSA boundaries...
..........................................................................
..........................
[progress] Finished!
4
Ho ampliato le risposte fornite da @smnirven e @theoretick per creare un si fisso barra di avanzamento ze che si riempie come si completa in modo che si può avere un'idea visiva di come completare il progresso è:
def getprogress(ftp,file,local_path)
transferred = 0
filesize = ftp.size(file)
ftp.get(file, local_path, 1024) do |data|
transferred += data.size
percent = ((transferred.to_f/filesize.to_f)*100).to_i
finished = ((transferred.to_f/filesize.to_f)*30).to_i
not_finished = 30 - finished
print "\r"
print "#{"%3i" % percent}%"
print "["
finished.downto(1) { |n| print "=" }
print ">"
not_finished.downto(1) { |n| print " " }
print "]"
end
print "\n"
end
ouput:
Executing gather for: ruby
Going to public ftp - ftp.ruby-lang.org
File list for /pub/ruby/2.0/:
ruby-2.0.0-p647.tar.gz
Downloading: ruby-2.0.0-p647.tar.gz
100%[==============================>]
La chiave con questo esempio è la stampa "\ r "per riscrivere la linea.
Problemi correlati
- 1. Ruby Net :: Thread timeout FTP
- 2. Ottieni avanzamento caricamento per Ruby Net :: HTTP POST
- 3. Barra di avanzamento circolare
- 4. Come utilizzare il server proxy con Ruby Net :: FTP?
- 5. barra di avanzamento in WPF
- 6. HTML5 Audio - Barra di avanzamento
- 7. Django-Sedano barra di avanzamento
- 8. Lato server - Barra di avanzamento
- 9. Barra di avanzamento Android DialogFragment
- 10. Barra di avanzamento Thinner Bootstrap?
- 11. battente con barra di avanzamento
- 12. Barra di avanzamento per AVAssetExportSession
- 13. Caricamento FTP tramite .NET
- 14. Avanzamento appCompat Altezza barra
- 15. .Net FTP Library
- 16. come utilizzare la barra di avanzamento nell'app per iphone
- 17. jQuesta barra di scorrimento con riempimento barra di avanzamento
- 18. Aggiorna barra di avanzamento nella barra di notifica
- 19. Barra di avanzamento WPF continua animazione
- 20. Barra di avanzamento Android nel pulsante
- 21. Una barra di avanzamento per scikit-learn?
- 22. Barra di avanzamento del testo in Matlab
- 23. Barra di avanzamento con immagine al centro
- 24. Percentuale barra di avanzamento jQuery semplice
- 25. sintassi barra di avanzamento in stile Android
- 26. ActionBar non mostra la barra di avanzamento
- 27. Barra di avanzamento della timeline per AVPlayer
- 28. Aggiorna barra di avanzamento da AsyncTaskLoader?
- 29. Barra di avanzamento C# cambia colore
- 30. come codificare una barra di avanzamento
Questa è una discussione precedente, ma è possibile assegnarsi la risposta. Buon lavoro. –
Sono d'accordo, grazie per questo esempio – chrisan