Title: Subir Ficheros al Servidor con PHP
1Subir Ficheros al Servidor con PHP
2Índice
- Formulario para seleccionar Archivos
- Propiedades del formulario.
- Código HTML.
- Página para almacenar el fichero
- Propiedades de la página.
- Propiedades del fichero de configuración del
servidor. - Variables del fichero en el servidor.
- Código PHP.
- Envío de múltiples ficheros
3Formulario para seleccionar archivos
- Creamos una página donde poder seleccionar el
fichero a enviar. - Formulario sencillo HTML.
- Capacidad de enviar gran cantidad de información
POST. - Llamara a un fichero .php encargado de subir el
fichero seleccionado subirF.php - Atributos necesarios para poder enviar esa
información.
4HTML
- ltform actionsubirF.php" method"post"
enctype"multipart/form-data"gt ltinput
type"hidden" name"MAX_FILE_SIZE"
value"100000"gt ltbgtEnviar un nuevo
archivo lt/bgt ltinput namenFichero"
type"file"gt ltinput type"submit"
value"Enviar"gt lt/formgt
5HTML
- ltform actionsubirF.php" method"post"
enctype"multipart/form-data"gt ltinput
type"hidden" name"MAX_FILE_SIZE"
value"100000"gt ltbgtEnviar un nuevo
archivo lt/bgt ltinput name"nFichero"
type"file"gt ltinput type"submit"
value"Enviar"gt lt/formgt
subirF.php Fichero en php encargado de subir
el fichero al servidor.
6HTML
- ltform actionsubirF.php" method"post"
enctype"multipart/form-data"gt ltinput
type"hidden" name"MAX_FILE_SIZE"
value"100000"gt ltbgtEnviar un nuevo
archivo lt/bgt ltinput name"nFichero"
type"file"gt ltinput type"submit"
value"Enviar"gt lt/formgt
post Enviaremos el fichero por la entrada
estándar.
7HTML
- ltform actionsubirF.php" method"post"
enctype"multipart/form-data"gt ltinput
type"hidden" name"MAX_FILE_SIZE"
value"100000"gt ltbgtEnviar un nuevo
archivo lt/bgt ltinput name"nFichero"
type"file"gt ltinput type"submit"
value"Enviar"gt lt/formgt
multipart/form-dataPermite subir datos y
archivos en un mismo formulario.
8HTML
- ltform actionsubirF.php" method"post"
enctype"multipart/form-data"gt ltinput
type"hidden" name"MAX_FILE_SIZE"
value"100000"gt ltbgtEnviar un nuevo
archivo lt/bgt ltinput name"nFichero"
type"file"gt ltinput type"submit"
value"Enviar"gt lt/formgt
MAX_FILE_SIZEPalabra reservada Máximo tamaño
del fichero(en bytes). Debería de comprobarlo el
servidor.
9HTML
- ltform actionsubirF.php" method"post"
enctype"multipart/form-data"gt ltinput
type"hidden" name"MAX_FILE_SIZE"
value"100000"gt ltbgtEnviar un nuevo
archivo lt/bgt ltinput namenFichero"
type"file"gt ltinput type"submit"
value"Enviar"gt lt/formgt
Referencia del fichero que tendremos en el
servidor.
10HTML
- ltform actionsubirF.php" method"post"
enctype"multipart/form-data"gt ltinput
type"hidden" name"MAX_FILE_SIZE"
value"100000"gt ltbgtEnviar un nuevo
archivo lt/bgt ltinput namenFichero"
type"file"gt ltinput type"submit"
value"Enviar"gt lt/formgt
fileSeleccionar el fichero.
11Página para almacenar el fichero
- Una vez en el servidor, el fichero se almacena en
un directorio temporal, a la espera de la
aceptación o no del fichero. - Si no se almacena, el fichero se elimina tras la
ejecución de la página. - Página donde
- Comprobaremos que el fichero cumple los
requisitos. - Realizamos la copia del fichero en un directorio
del servidor. - Formulario en PHP subirF.php
12Propiedades del fichero de configuración del
servidor.
- Fichero php.ini
- Permitir subir ficheros al servidor
- file_uploads On
- Seleccionamos un directorio temporal para los
archivos - upload_tmp_dir carp_temp/
- Tamaño máximo de los archivos.
- upload_max_filesize 2M
13Variables de fichero en el servidor
- _FILES variable que contiene la información del
fichero - HTTP_POST_FILESnFicheroname Nombre
original del fichero en el cliente. - HTTP_POST_FILESnFicherotmp_name Nombre
del fichero temporal en el servidor. - HTTP_POST_FILESnFicherotype Tamaño en
bytes del fichero. - HTTP_POST_FILESnFicheroerror Error
asociado al fichero.
14PHP
- lt? //Información del Archivo
- nombre_archivo HTTP_POST_FILES'nFichero''n
ame'tamano_archivo HTTP_POST_FILES'nFicher
o''size' - nombre_temporal HTTP_POST_FILES'nFichero''t
mp_name' - //compruebo si las características del archivo
son las que deseo if (tamano_archivo lt 100000) -
- echo El tamaño de archivo
incorrecto.Tamaño maximo 100 Kb máximo. " - else
- if(move_uploaded_file(nombre_temporal,
nombre_archivo)) - echo "El archivo ha sido cargado
correctamente." else - echo "Ocurrió algún error al subir el fichero.
No pudo guardarse." - ?gt
Guardamos en variables la información del
archivo nombre_archivo Nombre del fichero
original. tamano_archivo tamaño del
fichero. nombre_temporal Nombre(temp) del
fichero en el servidor.
15PHP
- lt? //Información del Archivo
- nombre_archivo HTTP_POST_FILES'nFichero''n
ame'tamano_archivo HTTP_POST_FILES'nFicher
o''size' - nombre_temporal HTTP_POST_FILES'nFichero''t
mp_name' - //compruebo si las características del archivo
son las que deseo if (tamano_archivo lt 100000) -
- echo El tamaño de archivo
incorrecto.Tamaño maximo 100 Kb máximo. " - else
- if(move_uploaded_file(nombre_temporal,
nombre_archivo)) - echo "El archivo ha sido cargado
correctamente." else - echo "Ocurrió algún error al subir el fichero.
No pudo guardarse." - ?gt
El fichero NO cumple las propiedades.
El fichero SI cumple las propiedades. Movemos el
fichero de su localización temporal, a una
definitiva, asignándole el nombre original que
queramos darle.
16PHP
- lt? //Información del Archivo
- nombre_archivo HTTP_POST_FILES'nFichero''n
ame'tamano_archivo HTTP_POST_FILES'nFicher
o''size' - nombre_temporal HTTP_POST_FILES'nFichero''t
mp_name' - //compruebo si las características del archivo
son las que deseo if (tamano_archivo lt 100000) -
- echo El tamaño de archivo
incorrecto.Tamaño maximo 100 Kb máximo. " - else
- if(move_uploaded_file(nombre_temporal,
nombre_archivo)) - echo "El archivo ha sido cargado
correctamente." else - echo "Ocurrió algún error al subir el fichero.
No pudo guardarse." - ?gt
Mostramos un mensaje de error. Al salir, el
fichero se elimina.
17PHP
- else
- if(move_uploaded_file(nombre_temporal,
nombre_archivo)) - echo "El archivo ha sido cargado
correctamente." else - echo "Ocurrió algún error al subir el fichero.
No pudo guardarse."
move_uploaded_file Movemos el fichero a la
posición definitiva.Le pasamos el fichero
temporal el nombre con el que queremos guardarlo.
Podemos indicar una ruta Move_uploaded_file(
nombre_temporal, direccion . nombre_archivo)
18Envío de múltiples ficheros
- A partir de la versión 3.0.10
- HTML
- ltinput namenFichero" type"file"gt
- ltinput namenFichero" type"file"gt
- PHP
- HTTP_POST_FILESnFicheroname0
- HTTP_POST_FILESnFicheroname1
19...y por ultimo...