2010-07-20 19 views
6

tengo un script como elPHP: mostrar el contenido después de forzar la descarga?

<?php 

if (file_exists("./foo.txt")) { 

    header("Content-type: application/force-download"); 
    header("Content-length: ".filesize("./foo.txt")); 
    header('Content-Disposition: attachment; filename="foo.txt"'); 
    readfile('./foo.txt'); 
} 

print "HEY!"; 

?> 

y quiero que el "Hola" que se escriben en la página después de la descarga forzada, ¿cómo es posible?

Veo páginas de descarga que son como "Si la descarga no comienza automáticamente, haga clic aquí", ¿así que es el contenido y la descarga? El hey en mi ejemplo está incluido en el archivo de texto, por lo que no funciona.

Respuesta

3

Esto sólo sería posible con un multipart message. Pero lamentablemente no hay muchos navegadores compatibles con mensajes multiparte en HTTP (creo que Opera es el único).

Es por eso que es una práctica común enviar la página de descarga con un meta refresh redirigir para tener un mensaje de texto y una acción de descarga (aunque está en el orden opuesto).

1

Esto no es posible de esta manera. (Al menos mientras no tengamos solicitudes de varias partes)

Las páginas que menciona redireccionan a la página "si la descarga no comienza ..." y activan la descarga desde allí, por lo general usando JavaScript para abrir la descarga en una nueva ventana.

1

mostrar el mensaje en otra página .. entonces proporcionar un enlace para descargar el archivo o redirigir el navegador del archivo PHP que obliga a la descarga ..

3

Puede hacerlo con META REFRESH así:

<meta http-equiv=REFRESH CONTENT="5; url=http://your_domain/your_file"> 
+0

+1 para la vieja escuela :) –

0
onClick="setTimeout(location.reload.bind(location), 15000);" 

Esto esperar 15 segundos (15.000 milisegundos), a continuación, llamar a la función location.reload, que es una función incorporada para recarga la página.

Cuestiones relacionadas