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
|