Como descobrir qual é o mimi-type de um arquivo utilizando o PHP?
Para isso será necessário uma função customizada que irá retornar o “mimi-type” com base no nome do arquivo.
MIME significa extensões multi-usos de correio da Internet “Multi-purpose Internet Mail Extensions”.
Os tipos MIME formam uma maneira padrão de classificar os tipos de arquivos na Internet. Os programas da Internet, como servidores Web e navegadores, possuem uma lista de tipos MIME, para que possam transferir arquivos do mesmo tipo da mesma forma, independentemente do sistema operacional em que estejam trabalhando.
Função completa:
function get_mime_type($file) { $idx = explode( '.', $filename ); $count_explode = count($idx); $idx = strtolower($idx[$count_explode-1]); $mimet = array( 'txt' => 'text/plain', 'htm' => 'text/html', 'html' => 'text/html', 'php' => 'text/html', 'css' => 'text/css', 'js' => 'application/javascript', 'json' => 'application/json', 'xml' => 'application/xml', 'swf' => 'application/x-shockwave-flash', 'flv' => 'video/x-flv', // images 'png' => 'image/png', 'jpe' => 'image/jpeg', 'jpeg' => 'image/jpeg', 'jpg' => 'image/jpeg', 'gif' => 'image/gif', 'bmp' => 'image/bmp', 'ico' => 'image/vnd.microsoft.icon', 'tiff' => 'image/tiff', 'tif' => 'image/tiff', 'svg' => 'image/svg+xml', 'svgz' => 'image/svg+xml', // archives 'zip' => 'application/zip', 'rar' => 'application/x-rar-compressed', 'exe' => 'application/x-msdownload', 'msi' => 'application/x-msdownload', 'cab' => 'application/vnd.ms-cab-compressed', // audio/video 'mp3' => 'audio/mpeg', 'qt' => 'video/quicktime', 'mov' => 'video/quicktime', // adobe 'pdf' => 'application/pdf', 'psd' => 'image/vnd.adobe.photoshop', 'ai' => 'application/postscript', 'eps' => 'application/postscript', 'ps' => 'application/postscript', // ms office 'doc' => 'application/msword', 'rtf' => 'application/rtf', 'xls' => 'application/vnd.ms-excel', 'ppt' => 'application/vnd.ms-powerpoint', 'docx' => 'application/msword', 'xlsx' => 'application/vnd.ms-excel', 'pptx' => 'application/vnd.ms-powerpoint', // open office 'odt' => 'application/vnd.oasis.opendocument.text', 'ods' => 'application/vnd.oasis.opendocument.spreadsheet', ); if (isset( $mimet[$idx] )) { return $mimet[$idx]; } else { return 'application/octet-stream'; } }
Um simples exemplo de sua utilização:
$file = "foto-upload-01.jpeg"; $mime_type = get_mime_type($file); var_dump( $mime_type );
O que é “mime type” ?
Um tipo MIME é um rótulo usado para identificar um tipo de dados. É usado para que o software possa saber como lidar com os dados. Ele tem o mesmo propósito na Internet que as extensões de arquivo fazem no Microsoft Windows.
Então, se um servidor diz “Este é o texto / html”, o cliente pode ir “Ah, este é um documento HTML, posso processá-lo internamente”, enquanto que se o servidor diz “Este é o aplicativo / pdf”, o cliente pode ir “Ah , Eu preciso iniciar o plugin FoxIt PDF Reader que o usuário instalou e que se registrou como o manipulador de aplicação / pdf. ”
Você encontrará mais comumente nos cabeçalhos das mensagens HTTP (para descrever o conteúdo com o qual um servidor HTTP está respondendo ou a formatação dos dados que está sendo POSTADO em uma solicitação) e em cabeçalhos de e-mail (para descrever o formato da mensagem e anexos).
Mime type mais utilizados
Extensão | Tipo do documento | Tipo MIME |
---|---|---|
.aac |
AAC audio file | audio/aac |
.abw |
AbiWord document | application/x-abiword |
.arc |
Archive document (multiple files embedded) | application/octet-stream |
.avi |
AVI: Audio Video Interleave | video/x-msvideo |
.azw |
Amazon Kindle eBook format | application/vnd.amazon.ebook |
.bin |
Any kind of binary data | application/octet-stream |
.bz |
BZip archive | application/x-bzip |
.bz2 |
BZip2 archive | application/x-bzip2 |
.csh |
C-Shell script | application/x-csh |
.css |
Cascading Style Sheets (CSS) | text/css |
.csv |
Comma-separated values (CSV) | text/csv |
.doc |
Microsoft Word | application/msword |
.eot |
MS Embedded OpenType fonts | application/vnd.ms-fontobject |
.epub |
Electronic publication (EPUB) | application/epub+zip |
.gif |
Graphics Interchange Format (GIF) | image/gif |
.htm |
HyperText Markup Language (HTML) | text/html |
.ico |
Icon format | image/x-icon |
.ics |
iCalendar format | text/calendar |
.jar |
Java Archive (JAR) | application/java-archive |
.jpeg .jpg |
JPEG images | image/jpeg |
.js |
JavaScript (ECMAScript) | application/javascript |
.json |
JSON format | application/json |
.mid .midi |
Musical Instrument Digital Interface (MIDI) | audio/midi |
.mpeg |
MPEG Video | video/mpeg |
.mpkg |
Apple Installer Package | application/vnd.apple.installer+xml |
.odp |
OpenDocument presentation document | application/vnd.oasis.opendocument.presentation |
.ods |
OpenDocument spreadsheet document | application/vnd.oasis.opendocument.spreadsheet |
.odt |
OpenDocument text document | application/vnd.oasis.opendocument.text |
.oga |
OGG audio | audio/ogg |
.ogv |
OGG video | video/ogg |
.ogx |
OGG | application/ogg |
.otf |
OpenType font | font/otf |
.png |
Portable Network Graphics | image/png |
.pdf |
Adobe Portable Document Format (PDF) | application/pdf |
.ppt |
Microsoft PowerPoint | application/vnd.ms-powerpoint |
.rar |
RAR archive | application/x-rar-compressed |
.rtf |
Rich Text Format (RTF) | application/rtf |
.sh |
Bourne shell script | application/x-sh |
.svg |
Scalable Vector Graphics (SVG) | image/svg+xml |
.swf |
Small web format (SWF) or Adobe Flash document | application/x-shockwave-flash |
.tar |
Tape Archive (TAR) | application/x-tar |
.tif |
Tagged Image File Format (TIFF) | image/tiff |
.ts |
Typescript file | application/typescript |
.ttf |
TrueType Font | font/ttf |
.vsd |
Microsoft Visio | application/vnd.visio |
.wav |
Waveform Audio Format | audio/x-wav |
.weba |
WEBM audio | audio/webm |
.webm |
WEBM video | video/webm |
.webp |
WEBP image | image/webp |
.woff |
Web Open Font Format (WOFF) | font/woff |
.woff2 |
Web Open Font Format (WOFF) | font/woff2 |
.xhtml |
XHTML | application/xhtml+xml |
.xls |
Microsoft Excel | application/vnd.ms-excel |
.xml |
XML |
application/xml |
.xul |
XUL | application/vnd.mozilla.xul+xml |
.zip |
ZIP archive | application/zip |
.3gp |
3GPP audio/video container | video/3gpp audio/3gpp if it doesn't contain video |
.3g2 |
3GPP2 audio/video container | video/3gpp2 audio/3gpp2 if it doesn't contain video |
.7z |
7-zip archive | application/x-7z-compressed |