-
Taller. Subir ficheros al servidor con PHP
Posted on febrero 4th, 2009 2 commentsHola amigos,
En esta entrega vamos a enseñaros como es posible subir ficheros desde el equipo del cliente hasta nuestro servidor utilizando PHP.
Este ejemplo podemos ejecutarlo en nuestro servidor local o si tenemos un servicio de Hosting podemos subirlo para realizar nuestras propias pruebas.
Descripción del ejemplo:
Vamos a crear una nueva página web en PHP la cual va a posibilitar la subida de un fichero de imagen (jpeg, bmp, png, gif) siempre que el fichero pese (ocupe) menos de 500Kb.
Dicha página va a constar de un formulario con los siguientes campos:
- Una caja de texto donde saldrá reflejada la ruta y el nombre del fichero que queremos subir (upload).
- Un botón para indicar que queremos subir el archivo hasta nuestro servidor.
Fuera ya del formulario, mostraremos la imagen que hemos subido a nuetro servidor.
¡Subiros todos al tren, que empezamos!
Dentro de las etiquetas "body" de nuestra nueva página, insertaremos el siguiente código, que corresponde a la creación del formulario necesario para poder subir los ficheros hasta nuestro servidor.
<!-- Creamos un formulario recursivo (Se va a llamr a si mismo cuando se procese)-->
"upload.php""post""frmUploadFile""multipart/form-data"
Fichero:<!-- Nos proporciona una caja de texto donde se mostrará la ruta del fichero
y un botón para "examinar/seleccionar" el fichero que queremos subir -->
"fileUpload""file""file""50"<!-- Botón submit que enviará los datos del formulario al servidor para ser procesados y volverá
a cargar la misma página (daros cuenta que el atributo "action" de la etiqueta "form"
apunta a si mismo, es decir, es recursivo
-->
"submit""submit""Subir"Bien, ahora ya tenemos nuestro formulario listo para poder seleccionar un fichero de nuestro equipo. Ahora nos hace falta el código PHP para poder filtrar el tipo y tamaño máximo del fichero que deseamos poder subir hacia nuestro servidor.
Cuando desde PHP se desea subir un fichero al servidor, se inicializa la variable global $_FILES. Es una matriz asociativa, que contiene las características del fichero que estamos intentando subir. Examinemos el siguiente código:
span style="color:#FF9933; font-style:italic;">// Compruebo que la matris $_FILES[nombreFormulario]['name'] (contiene el nombre del fichero a subir) no esté vacia
'fileUpload']['name''fileUpload']['name']; // Nombre del fichero
'fileUpload']['tmp_name']; // Nombre del fichero temporal que se crea
'fileUpload']['type']; // Tipo de fichero
'fileUpload']['size']; // Tamaño del fichero
// Inicializo una matriz con los tipos de ficheros permitidos.
"image/jpeg","image/bmp","image/png","image/gif");// Compruebo que el fichero sea del tipo deseado y que pese menos de 500kb
'UploadFiles/'// Copio de la ruta temporal a la carpeta destino
$lcMensaje="<br>El fichero <strong>$fileName</strong> se ha subido al servidor.<br><br>"// Borro el fichero temporal
"<br>No se ha podido completar la acción.<br>""<br>Solo se admiten ficheros planos y de imagen (jpeg, bmp, png) inferiores a 500K de texto.<br>"Como hemos podido observar, a la hora de subir un fichero al servidor, primero se crea en una carpeta temporal que está definida en el archivo php.ini. La variable que almacena esta ruta es upload_tmp_dir.
Ahora ya nos queda solo mostrar la imagen subida o mostrar el mensaje de error, si es que procede.
span style="color:#FF9933; font-style:italic;">// Inicializo la variable $fileName si esta está vacia. Puede suceder en la primera carga del formulario o si no se sube ningún fichero
''Mostramos la imagen....
"<? echo 'UploadFiles/'.$fileName; ?>" alt="Usuario" width="120" height="120" border="2" title="Usuario" />...y la descripción del fichero subido o la descripción de un posible error.
Podeis probar como quedaría el ejemplo final.
2 Respuestas to “Taller. Subir ficheros al servidor con PHP”
-
Ramarti noviembre 20th, 2010 at 19:29
hola amigos: esta bueno el taller, lo que queria preguntar es donde le agrego si quiero guardar en un lugar especifico de mi servidor o sea una carpeta, y que niveles de seguridad puedo hacer???. Gracias y cuenten con migo si quieren que comparta algo de mis experiencias.-
Raquel
-
Me gusta la valiosa información que se ofrece a sus artículos. Puedo marcar sus http://www.weblogica.es y cuentan con mis hijos de prueba hasta aquí en general. Estoy un poco positivas que van a ser informado bastante un montón de cosas nuevas aquí que nadie!