O processo geralmente é o seguinte: (de four.livejournal.com/730831.html)
HTTP upload progress bars are rather obfuscated- they typically involve a process running on the server keeping track of the size of the tempfile that the HTTP server is writing to, then on the client side an AJAX call is made every couple seconds to the server during the upload to ask for the progress of the upload.
Para fazer isso, você precisa instalar um módulo no seu servidor web (seja apache (1), nginx (2) ou lighttpd (3)). O que significa que você não pode rodar seu aplicativo Sinatra como um standalone ( ruby sinatraapp.rb
), mas que você tem que executá-lo através de (4) um dos servidores web acima mencionados. A maneira mais fácil é usar o Passenger (5).
Para o polling AJAX do lado do cliente, experimente o Ajax Upload (6).
HTH!
links
- (1): piotrsarnacki.com/2008/06/18/upload-progress-bar-with-mod_passenger-and-apache /
- (2): wiki.nginx.org/NginxHttpUploadProgressModule
- (3): redmine.lighttpd.net/wiki/1/Docs:ModUploadProgress
- (4): blog.zerosum.org/2008/7/4/passenger-3-sinatra
- (5): modrails.com /
- (6): valums.com/ajax-upload /