validar type from fileinfo_mime_type check php mime mime-types filenames file-type

type - ¿Cómo puedo determinar la extensión(es) asociada con un tipo MIME en PHP?



php mime type list (6)

Es posible que desee utilizar esta biblioteca: https://github.com/ralouphie/mimey

Ejemplo de uso:

$mimes = new /Mimey/MimeTypes; // Convert extension to MIME type: $mimes->getMimeType(''json''); // application/json // Convert MIME type to extension: $mimes->getExtension(''application/json''); // json

Esto porque aparentemente la calidad de las funciones PHP proporcionadas es dudosa.

¿Hay una asignación rápida y sucia de tipos MIME a extensiones en PHP que pueda usar?


No incorporado, pero no es terriblemente difícil hacer tu propio rollo:

function system_extension_mime_types() { # Returns the system MIME type mapping of extensions to MIME types, as defined in /etc/mime.types. $out = array(); $file = fopen(''/etc/mime.types'', ''r''); while(($line = fgets($file)) !== false) { $line = trim(preg_replace(''/#.*/'', '''', $line)); if(!$line) continue; $parts = preg_split(''//s+/'', $line); if(count($parts) == 1) continue; $type = array_shift($parts); foreach($parts as $part) $out[$part] = $type; } fclose($file); return $out; } function system_extension_mime_type($file) { # Returns the system MIME type (as defined in /etc/mime.types) for the filename specified. # # $file - the filename to examine static $types; if(!isset($types)) $types = system_extension_mime_types(); $ext = pathinfo($file, PATHINFO_EXTENSION); if(!$ext) $ext = $file; $ext = strtolower($ext); return isset($types[$ext]) ? $types[$ext] : null; } function system_mime_type_extensions() { # Returns the system MIME type mapping of MIME types to extensions, as defined in /etc/mime.types (considering the first # extension listed to be canonical). $out = array(); $file = fopen(''/etc/mime.types'', ''r''); while(($line = fgets($file)) !== false) { $line = trim(preg_replace(''/#.*/'', '''', $line)); if(!$line) continue; $parts = preg_split(''//s+/'', $line); if(count($parts) == 1) continue; $type = array_shift($parts); if(!isset($out[$type])) $out[$type] = array_shift($parts); } fclose($file); return $out; } function system_mime_type_extension($type) { # Returns the canonical file extension for the MIME type specified, as defined in /etc/mime.types (considering the first # extension listed to be canonical). # # $type - the MIME type static $exts; if(!isset($exts)) $exts = system_mime_type_extensions(); return isset($exts[$type]) ? $exts[$type] : null; }



Si desea utilizar un servicio web, acabo de crearlo como parte de mi servicio de ícono <-> mimetype

http://stdicon.com/

Por ejemplo :

http://stdicon.com/ext/html

Se ejecuta en appengine por lo que debe tener alta disponibilidad.


Si está trabajando con diferentes extensiones de imágenes limitadas y necesita algo muy simple, creo que esto es suficiente.

switch($info[''mime'']) { case ''image/gif'' : $extension = ''gif''; break; case ''image/png'' : $extension = ''png''; break; case ''image/jpeg'' : $extension = ''jpg''; break; default : throw new ApplicationException(''The file uploaded was not a valid image file.''); break; }


use este archivo: https://github.com/ralouphie/mimey/blob/develop/mime.types.php

Me gusta esto :

$mimes=include(''mime.types.php'');

o copiar contenido:

$mime= array ( ''mimes'' => array ( ''ez'' => array ( 0 => ''application/andrew-inset'', ), ''aw'' => array ( 0 => ''application/applixware'', ), ''atom'' => array ( 0 => ''application/atom+xml'', ), ''atomcat'' => array ( 0 => ''application/atomcat+xml'', ) ...

y un ejemplo de cómo obtener de un flujo:

$finfo = new /finfo(FILEINFO_MIME_TYPE); $mime=$finfo->buffer($data); $mimes=include(__DIR__."/mime.types.php"); echo ($mime); //mime echo ($mimes[''extensions''][$mime]); // file extension