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;
}
Podrías usar mime_content_type
pero está en desuso. Utilice php.net/manual/en/ref.fileinfo.php en php.net/manual/en/ref.fileinfo.php lugar:
function getMimeType($filename) {
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mime = finfo_file($finfo, $filename);
finfo_close($finfo);
return $mime;
}
Si desea utilizar un servicio web, acabo de crearlo como parte de mi servicio de ícono <-> mimetype
Por ejemplo :
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