2009-10-02 16 views
12

Tengo un formulario web que los usuarios completan en línea. Cuando presionen enviar, comenzará una descarga de archivos para ellos.Descarga del archivo de inicio automático después del envío del formulario

En este momento, proceso el envío del formulario y genero un archivo adecuado para el usuario y lo disparo con los encabezados adecuados. por ejemplo ...

header('Content-type: "application/octet-stream"'); 
header('Content-Disposition: attachment; filename="yourfile.txt"'); 
header("Content-Transfer-Encoding: binary"); 

Sin embargo, como esto comienza una descarga inmediata, el formulario original es dejado en la pantalla por el navegador.

Me gustaría ir a alguna pantalla de "Gracias" una vez que se complete la descarga (o antes de que comience la descarga). Sé que es posible, porque casi todos los sitios de descarga que visitas hacen esto (normalmente para llenarte de anuncios antes de que comience la descarga).

Entonces, ¿cómo se muestra una pantalla de "Gracias" que inicia la descarga después de un segundo?

¿Cómo afectaría alguna solución el comportamiento del botón de retroceso, ya que no deseo que el archivo se descargue nuevamente sin que se recargue el formulario?

Estoy usando PHP en el servidor y puedo confiar en que Javascript (y jQuery) están disponibles en el cliente.

Gracias.

Respuesta

23

Usted puede enviar el formulario a la Gracias documento y puso en su lugar una META refrescar a la descarga del archivo:

<meta http-equiv="refresh" content="3;url=download.php"> 
<p>Thank you! The download will start in 3 seconds. If not, use this link to download the <a href="download.php">file</a></p> 
+0

solo una nota - no se activa en firefox – Andrej

+1

@Andrej ¿Has puesto 'meta' en' head' y 'p' en' body'? – Gumbo

3

añadir una segunda página que dice algo "gracias, su donwnload se comenzará en pocos segundos" y desencadena la descarga usando javascript:

$(document).ready(function(){ 
    window.setTimeout(function(){ 
    window.location = 'http://yourdownloadhost.com/file.zip'; 
    }, 1500); 
}); 

o utilizar una redirección meta.

+0

¿Por qué usar javascript cuando también funciona una meta redirección? –

+0

Bueno, como puede ver en mi comentario a la publicación de Gumbo, yo prefiero la redirección de META. Sin embargo, los OP me confundieron, "puedo confiar en Javascript (y jQuery)". Sin embargo, algunos sistemas de plantillas dificultan la inserción de material en el . Entonces a veces JS podría ser una opción. – middus

+0

Debería estar en el encabezado también. Los javascript AFAIK en el cuerpo son ilegales. –

0

Puede insertar un iframe oculto en su página y enviar su formulario a este iframe.

Cuestiones relacionadas