PHP Classes
elePHPant
Icontem

Simple Uploader: Validate and save uploaded files

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Info   View files View files (5)   DownloadInstall with Composer Download .zip   Reputation   Support forum (2)   Blog    
Last Updated Ratings Unique User Downloads Download Rankings  
2014-04-01 (1 year ago) RSS 2.0 feedNot enough user ratingsTotal: 628 All time: 4,713 This week: 1,053Up
Version License PHP version Categories  
simple-uploader 1.3GNU General Publi...5HTTP, PHP 5, Files and Folders
Description Author  

This class can validate and save uploaded files.

It can validate an uploaded file by checking that it does not exceed a given size limit and it has one of the allowed file name extensions and MIME types.

A valid file is saved to a given directory with the original file name, if there is no other file already there with the same name.

Picture of Unay Santisteban
Name: Unay Santisteban <contact>
Classes: 7 packages by
Country: Spain Spain
Age: 26
All time rank: 104320 in Spain Spain
Week rank: 167 Up3 in Spain Spain Up

Details provided by the author  
files-upload-class
==================

Clase para la gestión de subida de archivos.

Configuración
=============

Lo único que debemos hacer para usar esta clase es importarla en el script donde la usaremos:
```php
include 'upload.class.php';
```

Uso
===

Bien ahora veamos un ejemplo de uso de esta clase, supongamos que tenemos un formulario desde el cual subimos un archivo:

**example-upload.html**
```html
<!DOCTYPE html>
<html>
    <head>
        <title>Subida de Archivos</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width">
    </head>
    <body>
    <form action="upload.php" method="POST" enctype="multipart/form-data">
        <label for="file">Filename:</label>
        <input type="file" name="file" id="file"><br>
        <input type="submit" name="submit" value="Submit">
    </form>
    </body>
</html>
```

Es importante recordar que cuando queremos enviar archivos debemos establecer en el formulario el atributo enctype con el valor *multipart/form-data*, ademas debemos usar el elemento input con el atributo type en file y asignarme un nombre desde el atributo name.

**example-upload.php**
```php 
include 'upload.class.php';
if (isset($_FILES['file'])) {
    $uploaded = new Upload($_FILES['file']);
    $types  = array('image/png');
    $ext    = array('png');
    $size   = 1;
    $uploaded->validate($size, $ext, $types);
    $estado = $uploaded->save('stored/');
    if($estado){
       echo "Imagen Guardada correctamente.";
       $uploaded->rename('imagen1.png');
    } else {
       echo "Imagen no valida.";
    }
}
```

Bien, vamos a comentar el código de arriba, lo primero que debemos fijarnos es que importamos la clase upload.class.php, esto es lógico ya que de lo contrario no podríamos usarla. En la linea 2 realizamos una evaluación sobre la variable FILES, para saber si se ha enviado o no un archivo, en caso afirmativo precederemos al proceso de dicho archivo. Una vez confirmado el envió del archivo instanciaremos un objeto de la clase Upload pasando le como único parámetro del constructor el array FILES con su correspondiente referencia al nombre del campo del formulario desde el que se a enviado el archivo, en este caso "file". Seguido creamos tres variables en las que estableceremos los parámetros de validación del archivo:

* *$types*: es un array con los tipos MIME permitidos.
* *$ext*: es un array con las extensiones permitidas.
* *$size*: es el tamaño máximo en MB del archivo.

Ahora solo tenemos que pasar le estas variables al método *validate()* para que efectué la validación. Este método devolverá TRUE si el archivo cumple los requisitos y FALSE en caso contrario. Una vez hemos realizado la validación precederemos a guardar la imagen en el directorio deseado, en nuestro ejemplo usaremos la carpeta "stored", cabe destacar que debemos añadir la barra "/" al final del nombre de la carpeta donde se subirán las imágenes. Finalmente evaluamos si la subida a sido correcta o no y mostramos un mensaje informativo a los usuarios. Adicionamente podemos renombrar el archivo subido usando el método *rename()*. 
  Files folder image Files  
File Role Description
Accessible without login HTML file example-upload.html Data Example of the upload form
Accessible without login Plain text file example-upload.php Example Example of class usage
Accessible without login Plain text file LICENSE Lic. Licence
Accessible without login Plain text file README.md Doc. Readme
Plain text file upload.class.php Class Main class

 Version Control Reuses Unique User Downloads Download Rankings  
 100%1Total:628All time:4,713
 This week:0This week:1,053Up