Está en la página 1de 3

Upload de Archivos con PHP | unijimpe

Pgina 1 de 3

Upload de Archivos con PHP


17 December 2006 | 341 comentarios | General, PHP Tags: chmod, formulario, ftp, PHP, upload Muchas veces necesitamos hacer uploads de archivos en nuestros proyectos para muchos es algo sencillo pero para los que recin empiezan les explicare como se realiza el proceso. Este upload lo haremos utilizando php.

Este artculo explica solo el proceso de subir archivos con PHP. Para consideraciones de seguridad pueden leer Seguridad en Upload de Archivos.

El primer paso es crear un formulario en el cual se seleccione el archivo a subir, para ello utilizaremos el tag input del tipo file, adems hay que tener en cuenta que hay que seleccionar el tipo de encoding para el formulario el cual es: multipart/form-data.
. <form action="upload.php" method="post" enctype="multipart/form-data"> . <input name="archivo" type="file" size="35" /> . <input name="enviar" type="submit" value="Upload File" /> . <input name="action" type="hidden" value="upload" /> . </form>

Luego en la pgina upload.php que es que se encarga de recibir los datos del formulario (Lo definimos en la propiedad action del formulario). El archivo seleccionado es subido temporalmente a una carpeta, entonces tenemos que copiar el archivo a la carpeta final, en caso contrario este archivo se eliminar automticamente. Para acceder a las propiedades del archivo php nos brinda el array $_FILES con las siguientes propiedades, en donde archivo es el nombre del campo con el cual se envi el archivo desde el formulario: $_FILES['archivo']['size']: tamao en bytes del archivo recibido $_FILES['archivo']['type']: tipo mime del archivo, por ejemplo image/gif $_FILES['archivo']['name']: nombre original del archivo

http://blog.unijimpe.net/upload-de-archivos-con-php/

15/09/2011

Upload de Archivos con PHP | unijimpe

Pgina 2 de 3

$_FILES['archivo']['tmp_name']: nombre del archivo temporal que se utiliza para almacenar en el servidor el archivo recibido Algo que hago siempre es anteponer 6 caracteres aleatorios antes del nombre del archivo, esto para evitar duplicidad de nombres de los archivos.
. $status = ""; . if ($_POST["action"] == "upload") { . // obtenemos los datos del archivo . $tamano = $_FILES["archivo"]['size']; . $tipo = $_FILES["archivo"]['type']; . $archivo = $_FILES["archivo"]['name']; . $prefijo = substr(md5(uniqid(rand())),0,6); . . if ($archivo != "") { . // guardamos el archivo a la carpeta files . $destino = "files/".$prefijo."_".$archivo; . if (copy($_FILES['archivo']['tmp_name'],$destino)) { . $status = "Archivo subido: <b>".$archivo."</b>"; . } else { . $status = "Error al subir el archivo"; . } . } else { . $status = "Error al subir archivo"; . } . }

Todos los archivos se copiarn a la carpeta /files por que as lo definimos a la hora de copiar el archivo. Hay que tener en cuenta que la carpeta a donde se copiarn los archivos deben tener permisos de escritura en caso contrario se devolver un error. Ahora si tienes un hosting debers cambiar los permisos, esto se hace comnmente con un cliente de FTP que utilizas para subir tus archivos al hosting. Por ejemplo yo utilizo el FlashFXP como cliente de FTP y hay una opcin llamada Atributes (CHMOD) para cambiar los permisos como se muestra en la siguiente imagen.

http://blog.unijimpe.net/upload-de-archivos-con-php/

15/09/2011

Upload de Archivos con PHP | unijimpe

Pgina 3 de 3

En nuestro ejemplo no hemos utilizado las propiedades size y type, pero ustedes la pueden usar para restringir a un mximo de tamao de archivo o restringir a cierto tipo de archivos por ejemplo solo permitir subir imgenes. Para finalizar, hemos agregado estilos a nuestra pgina creada y adems hemos listado los archivos subidos a la carpeta files. Pueden descargar los archivos fuente para que practiquen y hagan sus pruebas.

http://blog.unijimpe.net/upload-de-archivos-con-php/

15/09/2011