szurubooru/src/Helpers/MimeHelper.php

74 lines
1.7 KiB
PHP
Raw Normal View History

2014-09-15 11:38:24 +02:00
<?php
namespace Szurubooru\Helpers;
class MimeHelper
{
public static function getMimeTypeFromFile($path)
{
$finfo = new \finfo(FILEINFO_MIME);
2014-09-16 18:53:22 +02:00
return self::stripCharset($finfo->file($path));
2014-09-15 11:38:24 +02:00
}
public static function getMimeTypeFromBuffer($buffer)
{
$finfo = new \finfo(FILEINFO_MIME);
return self::stripCharset($finfo->buffer($buffer));
}
public static function isFlash($mime)
{
return strtolower($mime) === 'application/x-shockwave-flash';
2014-09-15 11:38:24 +02:00
}
public static function isVideo($mime)
{
return strtolower($mime) === 'application/ogg' or preg_match('/video\//i', $mime);
2014-09-15 11:38:24 +02:00
}
public static function isImage($mime)
{
return in_array(strtolower($mime), ['image/jpeg', 'image/png', 'image/gif']);
2014-09-15 11:38:24 +02:00
}
2014-09-23 19:00:40 +02:00
public static function getExtension($mime)
{
$map =
[
'application/x-shockwave-flash' => 'SWF',
'image/jpeg' => 'JPG',
'image/png' => 'PNG',
'image/gif' => 'GIF',
'video/3gpp' => '3GP',
'video/annodex' => 'AXV',
'video/dl' => 'DL',
'video/dv' => 'dif DV',
'video/fli' => 'FLI',
'video/gl' => 'GL',
'video/mpeg' => 'mpeg mpg MPE',
'video/MP2T' => 'TS',
'video/mp4' => 'MP4',
'video/quicktime' => 'qt MOV',
'video/ogg' => 'OGV',
'video/webm' => 'WEBM',
'video/vnd.mpegurl' => 'MXU',
'video/x-flv' => 'FLV',
'video/x-mng' => 'MNG',
'video/x-ms-asf' => 'asf ASX',
'video/x-ms-wm' => 'WM',
'video/x-ms-wmv' => 'WMV',
'video/x-ms-wmx' => 'WMX',
'video/x-ms-wvx' => 'WVX',
'video/x-msvideo' => 'AVI',
'video/x-matroska' => 'MKV',
'text/plain' => 'TXT',
];
$key = strtolower(trim($mime));
return isset($map[$key]) ? $map[$key] : null;
}
2014-09-15 11:38:24 +02:00
private static function stripCharset($mime)
{
return preg_replace('/;\s*charset.*$/', '', $mime);
}
}