Cómo descargar un archivo en PHP

How Download File Php



Generalmente, no se requiere un script PHP para descargar un archivo con las extensiones exe y Código Postal . Si la ubicación del archivo de este tipo de archivo se establece en el href atributo del elemento de anclaje, el archivo se descarga automáticamente cuando el usuario hace clic en el enlace de descarga. Algunos archivos, como imagen archivos, PDF archivos, texto archivos, CSV archivos, etc., no se descargan automáticamente, sino que se abren en el navegador cuando el usuario hace clic en el enlace de descarga. Estos archivos se pueden descargar a la fuerza en PHP usando el readfile () función que no se descarga automáticamente. Este tutorial le muestra cómo descargar por la fuerza cualquier archivo usando un script PHP.

Comprobar enlaces de descarga

Anteriormente se mencionó que Código Postal y exe los archivos se descargan automáticamente, sin utilizar el script PHP. Primero, cree un archivo HTML con el siguiente código. Aquí, los cuatro elementos de anclaje se definen para descargar los cuatro tipos de archivos. Estos tipos de archivos incluyen archivos TEXT, ZIP, PDF y JPG.







Descargar.html



< html >
< cabeza >
< título >Descargar archivos</ título >
</ cabeza >
< cuerpo >
< pag >< a href='abc.txt'>Descargar archivo TEXT</ a ></ pag >
< pag >< a href='horizon.zip'>Descargar archivo ZIP</ a ></ pag >
< pag >< a href='lecture.pdf'>Descargar archivo PDF</ a ></ pag >
< pag >< a href='rosa.jpg'>Descargar archivo JPG</ a ></ pag >
</ cuerpo >
</ html >

Producción
Aparecerá el siguiente cuadro de diálogo para descargar el archivo después de hacer clic en el enlace del archivo zip. A continuación, el usuario puede descargar el archivo o abrirlo en el administrador de archivos.




Si hace clic en el archivo de imagen, la imagen se abrirá automáticamente en el navegador, como se muestra en el siguiente resultado. Debe guardar el archivo para hacer una copia del archivo de imagen en la unidad local. De la misma manera, al hacer clic en los enlaces de archivos PDF y TEXT, el contenido del archivo se abrirá en el navegador sin descargar el archivo. La solución a este problema es descargar el archivo a la fuerza utilizando PHP incorporado readfile () función.





Descargar archivo usando la función readfile ()

los readfile () La función se usa en el script PHP para descargar a la fuerza cualquier archivo de la ubicación actual, o el archivo con la ruta del archivo. La sintaxis de esta función se proporciona a continuación.



Sintaxis
int readfile (cadena $ nombre de archivo [, bool $ use_include_path = false [, recurso $ contexto]])

Esta función puede tomar tres argumentos. El primer argumento es obligatorio y los otros dos argumentos son opcionales. El primer argumento, $ nombre de archivo , almacena el nombre del archivo o el nombre del archivo con la ruta que se descargará. El valor predeterminado del segundo parámetro, $ use_include_path , es falso y se establecerá en verdadero si el nombre de archivo con la ruta se usa en el primer argumento. El tercer argumento, $ contexto , se utiliza para indicar el recurso de flujo de contexto. Esta función devuelve el número de bytes leídos del archivo mencionado en el primer argumento. Los usos de esta función se muestran en los dos ejemplos siguientes.

Ejemplo 1: Descargar archivo con nombre de archivo

En este ejemplo, crearemos un archivo HTML con el siguiente código, donde se pasará el nombre del archivo como parámetro de la URL denominada sendero , y el valor de este parámetro se pasará al archivo PHP llamado download.php .

download2.html

< html >
< cabeza >
< título > Descargar archivos</ título >
</ cabeza >
< cuerpo >
< pag >< a href='download.php? path = abc.txt'> DescargarTEXTOexpediente</ a ></ pag >
< pag >< a href='download.php? path = horizon.zip'> Descargar archivo ZIP</ a ></ pag >
< pag >< a href='download.php? path = lecture.pdf'> Descargar archivo PDF</ a ></ pag >
< pag >< a href='download.php? path = rose.jpg'> Descargar archivo JPG</ a ></ pag >
</ cuerpo >
</ html >

Crearemos el archivo PHP con el siguiente código para descargar el archivo a la fuerza. Aquí el desaparecido) La función se utiliza para comprobar si el $ _GET ['ruta'] se define. Si la variable está definida, la El archivo existe() La función se utiliza para comprobar si el archivo existe en el servidor. A continuación, el encabezamiento() La función se utiliza para establecer la información de encabezado necesaria antes de utilizar la readfile () función. los nombre base () La función se utiliza para recuperar el nombre del archivo y la tamaño del archivo() La función se utiliza para leer el tamaño del archivo en bytes, que se mostrará en el cuadro de diálogo de apertura para descargar el archivo. los enjuagar() La función se utiliza para borrar el búfer de salida. los readfile () La función se usa solo con el nombre de archivo, aquí.

download.php



si( desaparecido ($ _GET['sendero']))
{
// Leer el nombre del archivo
$ nombre de archivo = $ _GET['sendero'];
// Comprueba que el archivo existe o no
si( El archivo existe ($ nombre de archivo)) {

// Definir la información del encabezado
encabezamiento ('Descripción del contenido: Transferencia de archivos');
encabezamiento ('Tipo de contenido: aplicación / secuencia de octetos');
encabezamiento ('Cache-Control: no-cache, must-revalidate');
encabezamiento ('Caduca: 0');
encabezamiento ('Disposición de contenido: adjunto; nombre de archivo = ''. nombre de base ($ nombre de archivo).''');
encabezamiento ('Largancia de contenido: ' . tamaño del archivo ($ nombre de archivo));
encabezamiento ('Pragma: público');

// Limpiar el búfer de salida del sistema
enjuagar ();

// Leer el tamaño del archivo
readfile ($ nombre de archivo);

// Terminar del script
los ();
}
demás{
echo 'El archivo no existe.';
}
}
demás
echo 'El nombre de archivo no está definido.'
?>

Producción
El siguiente resultado aparecerá después de hacer clic en el enlace de descarga del archivo de imagen. El tamaño de archivo del rose.jpg la imagen es 27,2 KB , como se muestra en el cuadro de diálogo. Puede descargar el archivo seleccionando el Guardar el archivo botón de radio y presionando el OK botón.

Ejemplo 2: Descargar archivo con ruta de archivo

Si el archivo existe en la ubicación del archivo dada, será necesario mencionar la ruta del archivo en la URL. En este ejemplo, crearemos un archivo HTML con el siguiente código, que pasará el nombre del archivo con la ruta del archivo:

download3.html

< html >
< cabeza >
< título >Descargar archivos</ título >
</ cabeza >
< cuerpo >
< pag >< a href='download.php? path = downloads / lecture.pdf'>Descargar archivo PDF</ a ></ pag >
< pag >< a href='download2.php? path = downloads / rose.jpg'>Descargar archivo JPG</ a ></ pag >
</ cuerpo >
</ html >

Crearemos un archivo PHP con el siguiente código para descargar un archivo desde la ruta del archivo. El código PHP del ejemplo anterior se modificará ligeramente para descargar el archivo desde la ruta indicada. los clearstatecache () La función se utiliza para borrar la caché que se almacenó previamente. Se utilizan dos argumentos en la readfile () función.

download2.php


si( desaparecido ($ _GET['sendero']))
{
// Leer la URL
$ url = $ _GET['sendero'];

// Limpiar la caché
clearstatcache ();

// Verifica que la ruta del archivo exista o no
si( El archivo existe ($ url)) {

// Definir la información del encabezado
encabezamiento ('Descripción del contenido: Transferencia de archivos');
encabezamiento ('Tipo de contenido: aplicación / secuencia de octetos');
encabezamiento ('Disposición de contenido: adjunto; nombre de archivo = ''. nombre de base ($ url).''');
encabezamiento ('Largancia de contenido: ' . tamaño del archivo ($ url));
encabezamiento ('Pragma: público');

// Limpiar el búfer de salida del sistema
enjuagar ();

// Leer el tamaño del archivo
readfile ($ url,cierto);

// Terminar del script
los ();
}
demás{
echo 'La ruta del archivo no existe.';
}
}
echo 'La ruta del archivo no está definida.'

?>

Producción
Después de hacer clic en el enlace de descarga del archivo PDF, aparecerá el siguiente resultado.

Video Tutorial

Conclusión

Este artículo proporcionó una forma sencilla de descargar por la fuerza cualquier archivo utilizando el script PHP, para ayudar a los lectores a agregar la función de descarga en su script.