2010-07-10 9 views
5

Me gustaría crear una página PHP que muestra un mensaje como¿Cómo puedo crear una página de PHP 'Descargar comenzará en breve'?

Your download will begin shortly. 

If it does not start, please click here to restart the download 

es decir, el mismo tipo de página que existe en los principales sitios web.

Funcionará como esto:

<a href="download.php?file=abc.zip">Click here</a> 

Cuando el usuario hace clic en ese enlace, que se llevó a download.php que le muestra ese mensaje, y luego ofrece el archivo para su descarga.

¿Cómo puedo hacer esto?

¡Muchas gracias!

Respuesta

2

El enlace tiene que hacer una de dos cosas:

  • punto directamente al archivo en su servidor web
  • punto a un script PHP que no hará más que establecer las cabeceras apropiadas y servir el archivo como el cuerpo de la página. ¡Sin salida de texto! Consulte http://teddy.fr/blog/how-serve-big-files-through-php para saber cómo servir realmente el archivo.

Una forma de hacer que el navegador inicie la descarga "por sí mismo" es utilizar una etiqueta META REFRESH.

Otra forma es utilizar JavaScript, como este (de la página de descargas de Firefox de Mozilla):

function downloadURL() { 
    // Only start the download if we're not in IE. 
    if (download_url.length != 0 && navigator.appVersion.indexOf('MSIE') == -1) { 
     // 5. automatically start the download of the file at the constructed download.mozilla.org URL 
     window.location = download_url; 
    } 
} 

// If we're in Safari, call via setTimeout() otherwise use onload. 
if (navigator.appVersion.indexOf('Safari') != -1) { 
    window.setTimeout(downloadURL, 2500); 
} else { 
    window.onload = downloadURL; 
} 
+0

Ver esta página, por ejemplo: http://www.mozilla.com/en-US/products/download.html? product = firefox-3.6.6 & os = win & lang = en-US Tiene salida de texto y, sin embargo, el archivo se descarga. Quiero duplicar algo así. – Rohan

+0

Genial, gracias por la respuesta actualizada! Tiene sentido para mi:-) – Rohan

2
<?php 
// download.php 
$url = 'http://yourdomain/actual/download?link=file.zip'; // build file URL, from your $_POST['file'] most likely 
?> 
<html> 
    <head> 
     <!-- 5 seconds --> 
      <meta http-equiv="Refresh" content="5; url=<?php echo $url;?>" /> 
    </head> 
    <body> 
     Download will start shortly.. or <a href="<?php echo $url;?>">click here</a> 
    </body> 
</html> 
0

Si desea asegurarse de que el archivo se descargará (a diferencia de muestra en el navegador o un complemento de navegador), puede configurar el encabezado HTTP Content-Disposition. Por ejemplo, para obligar a los archivos PDF para descargar en lugar de abrirse en el plugin para el navegador:

header('Content-type: application/pdf'); 
header('Content-Disposition: attachment; filename="foo.pdf"'); 
readfile('foo.pdf'); 
Cuestiones relacionadas