Comentarios Recientes

Forzar descarga de un archivo en PHP

| Categorías PHP, Programacion, Tutoriales | | 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);
?>

Post Similares

2 Responses to “Forzar descarga de un archivo en PHP”

  1. Gustavo Baldera says:

    uso:

    script.php?path=archivo.ext

    :p

  2. Siedrix says:

    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