Forzar descarga de un archivo en PHP
Categorías PHP, Programacion, Tutoriales | Fecha 07-04-2010 | Comentario 2
|
Number of View: 497
Este ejemplo es muy bueno para aquellas ocaciones en las que quisieramos forzar a descargar un archivo, aun sea una imagen, ya que generalmente se abren dentro del mismo navegador.
Tambien es posible aprovechar este pequeño script para esconder nombres de archivos, de manera que se puede pedir un ID de un archivo y no su nombre, mucho menos su ruta.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | < ?php // downloading a file $filename = $_GET['path']; // fix for IE catching or PHP bug issue header("Pragma: public"); header("Expires: 0"); // set expiration time header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); // browser must download file from server instead of cache // force download dialog header("Content-Type: application/force-download"); header("Content-Type: application/octet-stream"); header("Content-Type: application/download"); // use the Content-Disposition header to supply a recommended filename and // force the browser to display the save dialog. header("Content-Disposition: attachment; filename=".basename($filename).";"); /* The Content-transfer-encoding header should be binary, since the file will be read directly from the disk and the raw bytes passed to the downloading computer. The Content-length header is useful to set for downloads. The browser will be able to show a progress meter as a file downloads. The content-lenght can be determines by filesize function returns the size of a file. */ header("Content-Transfer-Encoding: binary"); header("Content-Length: ".filesize($filename)); @readfile($filename); exit(0); ?> |
uso:
script.php?path=archivo.ext
:p
Los headers son de las funcionalidades mas interesantes de PHP, desde control de cache hasta generar imagenes con gd.
Tambien soy fan de tener hojas de estilo y archivos de javascript como .php’s
Buen tutorial