Si le entiendo bien, quiere mostrar una barra de progreso hasta que su servidor esté listo para enviar un archivo, no para mostrar el progreso del archivo descargado.
Si eso es cierto, se trata de un ejercicio difícil. Una barra de progreso confiable necesita saber (bastante exactamente) lo que está haciendo y cuánto tiempo llevará. En su caso, hay muchos factores poco fiables (uno de ellos, tal vez el más grande, es la propia red).
Por lo tanto, la mayoría de los desarrolladores utilizan algún tipo de animación "interminable" para mostrar el "trabajo en progreso".
actualización
Basado en su comentario, la forma más sencilla de mostrar un "trabajo en progreso" animación se vería como
$.ajax({
url: "/myscripts/myserverscript",
type: "POST",
data: {
foo: "bar"
},
dataType: "text",
beforeSend: function(xhr){
// display a progress animation
},
complete: function(xhr, status){
// hide the animation
}
...
});
En el caso de una única solicitud. También puede configurar un controlador de eventos ajax global para ambos (.ajaxStart()
y .ajaxStop()
) para configurar el show/hide functionallity.
Referencias: .ajax(), .ajaxStart(), bar .ajaxStop()
ME ENCANTARÍA saber cómo hacerlo –
¿Cuánto tiempo demora en generar el archivo? – cherouvim
@cherouvim: El tiempo no es estático aquí. Varía de un archivo a otro. Lleva un tiempo mínimo de 1 segundo hasta un máximo de 20-30 minutos. –