Como Subir Archivos con PHP
Español | Php | Online
Descripción:Muchas veces al navegar por una página nos es necesario poder subir archivos de nuestra PC a la web, bien sea para colgar nuestra foto, adjuntar un archivo, mantener una copia, etc., etc.
En esta ocasión, vamos a usar unas
funciones de PHP que nos permiten copiar nuestros archivos al directorio
que queramos. Esta vez lo haremos de forma local, es decir en nuestra
PC. Usando tags de Html, creamos una página simple que nos ayude a
escoger el archivo a subir. Tendremos además una página PHP que hará el
trabajo de subir nuestro archivo.
Es muy importante que te fijes en el tipo de formulario usado, ya que cuenta con un atributo en
especial: enctype="multipart/form-data". Esto es clave ponerlo, ya que le estamos diciendo que nuestro formulario será usado tanto para mandar archivos como campos de datos.
especial: enctype="multipart/form-data". Esto es clave ponerlo, ya que le estamos diciendo que nuestro formulario será usado tanto para mandar archivos como campos de datos.
MUY IMPORTANTE: El atributo
enctype="multipart/form-data" tiene que estar siempre que queramos subir
un fichero, de lo contrario no se subirá ningún archivo. Es bastante
habitual olvidarse de este atributo y perder un valioso tiempo viendo
qué pasa.
Lo primero es crear un formulario donde alojar el componente que nos permitirá seleccionar ficheros, un "input" de tipo "file".
La parte HTML ya la tenemos lista, es un sencillo formulario con un
campo para subir un fichero y un botón de envío. Como se puede observar,
hemos indicado que los datos del formulario se envien al fichero "upload.php". A continuación vamos a ver qué debería contener ese fichero.
Así de sencillo, solamente hay que usar la función move_uploaded_file indicándole cual es el fichero que se ha subido como primer parámetro, y la ruta donde queremos guardarlo como segundo parámetro. En este caso hemos subido el fichero que hemos enviado a través del campo con nombre "foto" y lo hemos guardado en "imagenes/upload/". Obviamente, hay que crear este directorio y darle permisos de escritura (777) para que PHP pueda almacenar el fichero.
En esta línea de código hay otra cosa muy importante para manejar las subidas de ficheros, el array $_FILES. Este array contiene información sobre los ficheros subidos y es el que usamos para obtener el nombre temporal con el que se ha subido el fichero y su nombre real para copiarlo en el directorio de destino.
El contenido de $_FILES es el siguiente:
Así de sencillo, solamente hay que usar la función move_uploaded_file indicándole cual es el fichero que se ha subido como primer parámetro, y la ruta donde queremos guardarlo como segundo parámetro. En este caso hemos subido el fichero que hemos enviado a través del campo con nombre "foto" y lo hemos guardado en "imagenes/upload/". Obviamente, hay que crear este directorio y darle permisos de escritura (777) para que PHP pueda almacenar el fichero.
En esta línea de código hay otra cosa muy importante para manejar las subidas de ficheros, el array $_FILES. Este array contiene información sobre los ficheros subidos y es el que usamos para obtener el nombre temporal con el que se ha subido el fichero y su nombre real para copiarlo en el directorio de destino.
El contenido de $_FILES es el siguiente:
- tmp_name: Es el nombre del fichero temporal donde se ha hecho el upload.
- name: Es el nombre original del fichero, el que le puso el usuario.
- type: El tipo mime del fichero. Por ejemplo si es una imagen jpeg el valor de esta clave será "image/jpeg"
- error: Indica si ha habido algún error durante la subida.
- size: Tamaño del fichero en bytes.
Algunos servidores al subir un fichero automáticamente asignan unos permisos que impiden que se puedan ver desde la web, en este caso podemos usar la función chmod para cambiar los permisos a por ejemplo 644.
Muy bueno gracias
ResponderEliminar