Los MIME Types

Los MIME Types (Multipurpose Internet Mail Extensions) son un identificador de dos partes para formatos de archivos y contenidos de formato de transmisión en Internet.

Para mayor simplicidad a estas 2 partes se les puede llamar general y particular. Por ejemplo:

image/gif

La parte general indica que es una imagen y la parte particular indica que es con formato GIF.

Cuando estamos trabajando con subida de archivos con PHP una de las validaciones que debemos hacer es el control del tipo de archivo que se está subiendo.

El tipo de archivo se puede conseguir fácilmente usando la variable global $FILES ya que está incluido en este array.

En el ejemplo en funcionamiento tenemos 2 ejemplos. Nos vamos a centrar a explicar el de las imágenes ya que es más completo.

Creamos nuestro formulario simple que permite la subida de un archivo:

<form action="index.php" method="post" enctype="multipart/form-data">
    <div class="form-group">
        <label for="fileUpload">Archivo CSV</label>
        <input type="hidden" name="MAX_FILE_SIZE" value="2000000" />
        <input type="file" name="attachment" class="form-control" />
    </div>
    <div class="form-group">
        <button type="submit" name="submitCSV" class="btn btn-default button button-medium">
            <span>Subir<i class="icon-chevron-right right"></i></span>
        </button>
    </div>
</form>

Se trata de un formulario que para permitir la subida de archivos le añadimos el atributo enctype y tan solo tenemos un campo que nos permite seleccionar el archivo del PC y un botón de envío.

Uno de los controles que hay que tener en cuenta tras enviar el formulario es el control del tipo de archivo que se está subiendo. En nuestro caso, tan solo queremos que sean imágenes con disntintas extensiones.

Podemos declarar un array con los tipos que queremos:

$mime_type_image = array(
    'png' => 'image/png',
    'jpe' => 'image/jpeg',
    'jpeg' => 'image/jpeg',
    'jpg' => 'image/jpeg',
    'gif' => 'image/gif',
    'bmp' => 'image/bmp',
);

Y controlar, por ejemplo, el botón del formulario de la siguiente forma:

if (isset($_POST['submitImage'])) {
    if(!in_array($_FILES['attachment']['type'], $mime_type_image)) {
        echo 'El archivo no es correcto. Debe tener extensión ';
        foreach ($mime_type_image as $key => $value) {
            echo '.'.$key.', ';
        }
    }
    else {
        echo 'El archivo es correcto';
    }
}

Si se ha pulsado el botón de envío, revisamos si el tipo de archivo está en nuestro array previamente declarado con los tipos que deseamos.  En el caso de que el tipo de archivo esté en el array declarado, el archivo será correcto para ser procesado, en caso contrario, no.

Existen infinidad de tipos de archivos así que esta técnica puede servir para considerar cualquier tipo de archivo.

Ver ejemplo en funcionamiento

1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (2 votos, promedio: 5,00 de 5)
Cargando…

Comparte en las redes sociales

Escrito por Jose Aguilar - Experto programador Prestashop y Wordpress.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*