Tutorial de PHP y MySQL - Descarga de archivos

12 - Descarga de archivos

[editar]
Tutorial creado por José Antonio Rodríguez. Extraido de: http://es.tldp.org/Manuales-LuCAS/manual_PHP/manual_PHP/
02 de Marzo de 2006
Vamos a ver un caso especial, como descargar un archivo desde un formulario. Para ello utilizaremos una etiqueta INPUT de tipo FILE, soportada a partir de las versiones de los navegadores Nestcape Navigato 2.0 e Internet Explorer 4.0.

El formulario debe usar el método post, y el atributo post, y el atributo enctype debe tener el valor multipart/form-data. Además al formulario debemos añadirle un campo oculto de nombre MAX_FILE_SIZE, al cuál le daremos el valor en byte del tamaño máximo del archivo a descargar.

<FORM ENCTYPE="multipart/form-data" ACTION="7-3.php3" METHOD="post">

<INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="100000">

<INPUT NAME="archivo" TYPE="file">

<INPUT TYPE="submit" VALUE="Descargar Archivo">

</FORM>

Cuando el formulario es enviado, PHP detectarará automaticamente que se está descargando un archivo y lo colocará en un directorio temporal en el servidor. Dicho directorio será que el que esté indicado en el archivo de configuración php3.ini, o en su defecto en el directorio temporal del sistema.

Cuando PHP dectecta que se está descargando un archivo crea varias variables con el prefijo del nombre del archivo pero con distintas terminaciones. La variable terminada en _name contiene eligoenlinea">_name contiene el nombre original del archivo, la terminad en _size el tamaño en bytes de éste, y la variable terminada en _type nos indicará el tipo de archivo si éste es ofrecido por el navegador.

Si el proceso de descarga no ha sido correcto la variable archivo tomará el valor none y _size será , y si el proceso ha sido correcto, pero la variable teminada en _size da , quiere decir que el archivo a descarga supera el tamaño máximo indicado por MAX_FILE_SIZE.

Una vez descargado el archivo, lo primero que debemos hacer es moverlo a otro lugar, pues sino se hace nada con él, cuando acabe la ejecución de la página se borrará.

Veamos un ejemplo de todo lo dicho.

<HTML>

<BODY>

<?PHP

if ($enviar) {if ($enviar) {

if ($archivo != "none" AND $archivo_size != 0){

echo "Nombre: $archivo_name <BR>\n";

echo "Tamaño: $archivo_size <BR>\n";

echo "Tipo: $archivo_type <BR>\n";

/* para Windows

if (! copy ($archivo, "C:\\TEMP\\".$archivo_name)) {

echo "<h2>No se ha podido copiar el archivo</h2>\n";

}

*/

/* para Linux/Unix */

if (! copy ($archivo, "/tmp/".$archivo_name)) {

echo "<h2>No se ha podido copiar el archivo</h2>\n";

}

} elseif ($archivo != "none" AND $archivo_size
0) {
echo "<h2>Tamaño de arcft: 75">echo "<h2>Tamaño de archivo superado</h2>\n";

} else {

echo "<h2>No ha escogido un archivo para descargar</h2>\n";

}

echo "<HR>\n";

}

?>

<FORM ENCTYPE="multipart/form-data" ACTION="<?php echo $PHP_SELF ?>" METHOD="post">

<INPUT type="hidden" name="MAX_FILE_SIZE" value="100000">

<p><b>Archivo a descargar<b><br>

<INPUT type="file" name="archivo" size="35"></p>

<p><INPUT type="submit" name="enviar" value="Aceptar"></p>

</FORM>

</BODY>

</HTML>
[editar]

17 opiniones

CASTILLO VILLA ESWIN te escribe:

Hola realmente este contenido de php y mysql es exelente este contenido esta muy entendible, de verdad sigue asi. Att: desde PERÚ.
gracias

muy bueno, me sacaste de un apuro
excelente

muy bueno
E

E
sdcv

trash
1 2 3 4 | siguiente >

Tutoriales relacionados con 'Tutorial de PHP y MySQL'

Su principal objetivo de diseño fue la velocidad, por ello se suprimieron algunas características de... Más »
En este artículo explicamos paso a paso como realizar una instalación a partir de los... Más »
Entiendase que AJAX no se refiere a usar el objeto XMLHttpRequest de manera indispensable porque... Más »
Las sesiones nos permiten almacenar y consultar información sobre un visitante sin necesidad de estar... Más »
Hace muuuuucho tiempo, cuando empezaba a aprender algo sobre php, me llamó la atención un... Más »

Autor y licencia de 'Tutorial de PHP y MySQL'


Tutorial de José Antonio Rodríguez. Extraido de: http://es.tldp.org/Manuales-LuCAS/manual_PHP/manual_PHP/ CopyLeft
Licencia GNU Free Documentation License: http://www.es.gnu.org/licencias/fdles.html
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.