jueves, 7 de junio de 2012

El Array SuperGlobal $_FILES de PHP


$_FILES es un array asociativo el cual permite subir archivos al servidor.

Para ello es necesario incluir en un formulario el objeto file ... 

<input name="file" type="file"> 

Y una cosa muy importante hay que añadir en la etiqueta form lo siguiente ...  enctype="multipart/form-data"

<form method="post" action="<?php $_SERVER["PHP_SELF"]; ?>" enctype="multipart/form-data"> ...</form>

$_FILES["file"]["propiedad"];

Tipo de propiedades:
  • name: nombre del archivo
  • type: tipo de extensión del archivo
  • tmp_name: ruta de la imagen temporal
  • size: tamaño del archivo
  • error: devuelve 0 si no ha ocurrido ningún error
El siguiente ejemplo permite la subida de imágenes tipo .jpg .jpeg .png y .gif no mayores de 3 Megabytes.

Imagen 1, se ha seleccionado un archivo correcto ...


 Imagen 2, se ha seleccionado un archivo incorrecto ...



Código del ejemplo ...

<?php
/* By http://php-estudios.blogspot.com */

//$_FILES - permite la subida de archivos al servidor

$resultado = "";
if (isset($_POST["upload"])){

$tamano = $_FILES [ 'file' ][ 'size' ]; // Leemos el tamaño del fichero
$tamaño_max = "25200000"; // Tamaño maximo permitido 3MB
$nombre_aleatorio = str_shuffle("abcdefghijklmnopqrstuvwxyz"); //nombre aleatorio del archivo

if( $tamano < $tamaño_max){ // Comprobamos el tamaño

$destino = ""; // Carpeta, en este caso la misma del script

//Para saber el tipo de imagen ...
$image = explode("image/", $_FILES["file"]["type"]);
$tipo = $image[1];

if($tipo == "jpg" || $tipo == "jpeg" || $tipo == "png" || $tipo == "gif")
{
$ruta = "".$destino."".$nombre_aleatorio.".".$tipo.""; // CREAMOS LA RUTA
move_uploaded_file ( $_FILES [ 'file' ][ 'tmp_name' ], $ruta); // Subimos el archivo
$resultado = "Enhorabuena el archivo ha sido subido con éxito";
}
else
{
$resultado = "Ha habido un error, archivo no permitido.";
}
}
else
{
$resultado = "El archivo supera el tamaño máximo permitido.";
}
}
?>
<form method="post" action="<?php $_SERVER["PHP_SELF"]; ?>" enctype="multipart/form-data">
<input type="file" name="file"> Max. 3Mb | Tipo .jpg .jpeg .png .gif
<input type="hidden" name="upload">
<input type="submit" value="Subir">
</form>
<?php echo "<h3>$resultado</h3>"; ?>




No hay comentarios: