Inicial > PHP > Array com Mime Types

Array com Mime Types

Neste artigo mostro um array com várias Mime Types referentes à extensões para uso em classes de upload.

Eu estava fazendo uma classe de upload por diversão (vou aprimorá-la e distribuir, está ficando muito boa) e, na hora de fazer a verificação do arquivo, eu só verificava a extensão. Algumas pessoas me alertaram que isso pode (e de fato é) perigoso, pois a pessoa pode simplesmente renomear, logo, o ideal é cuidar dos dois, extensão e tipo.

O fato é que é difícil pegar todos os Mime Types existentes, logo, fiz um array associativo (com a ajuda do site arquivodecodigos.net) com os Mime Types referentes às extensões. E aí vai:

$mime = array(“application/hta” => “hta”,
“application/java” => “class”,
“application/java-byte-code” => “class”,
“application/msword” => “doc”,
“application/msword” => “dot”,
“application/octet-stream” => “*”,
“application/octet-stream” => “bin”,
“application/octet-stream” => “class”,
“application/octet-stream” => “dms”,
“application/octet-stream” => “exe”,
“application/octet-stream” => “lha”,
“application/octet-stream” => “lzh”,
“application/pdf” => “pdf”,
“application/rtf” => “rtf”,
“application/vnd.ms-excel” => “xla”,
“application/vnd.ms-excel” => “xlc”,
“application/vnd.ms-excel” => “xlm”,
“application/vnd.ms-excel” => “xls”,
“application/vnd.ms-excel” => “xlt”,
“application/vnd.ms-excel” => “xlw”,
“application/vnd.ms-powerpoint” => “pot”,
“application/vnd.ms-powerpoint” => “pps”,
“application/vnd.ms-powerpoint” => “ppt”,
“application/winhlp” => “hlp”,
“application/x-compressed” => “zip”,
“application/x-gzip” => “gz”,
“application/x-java-class” => “class”,
“application/x-javascript” => “js”,
“application/x-mplayer2” => “asx”,
“application/x-msaccess” => “mdb”,
“application/x-tar” => “tar”,
“application/x-zip-compressed” => “zip”,
“application/xml” => ” xml”,
“application/zip” => “zip”,
“audio/basic” => “au”,
“audio/basic” => “snd”,
“audio/mid” => “mid”,
“audio/mid” => “rmi”,
“audio/mpeg” => “mp3”,
“audio/x-mpegurl” => “m3u”,
“audio/x-pn-realaudio” => “ra”,
“audio/x-pn-realaudio” => ” ram”,
“audio/x-wav” => “wav”,
“image/bmp” => “bmp”,
“image/gif” => “gif”,
“image/jpeg” => “jpe”,
“image/jpeg” => “jpeg”,
“image/jpeg” => “jpg”,
“image/x-icon” => “ico”,
“multipart/x-zip” => “zip”,
“text/asp” => “asp”,
“text/css” => “css”,
“text/html” => “html”,
“text/html” => “htm”,
“text/html” => “stm”,
“text/plain” => “bas”,
“text/plain” => “c”,
“text/plain” => “h”,
“text/plain” => “txt”,
“text/richtext” => “rtx”,
“text/x-component” => “htc”,
“text/xml” => “xml”,
“video/mpeg” => “mp2”,
“video/mpeg” => “mpa”,
“video/mpeg” => “mpe”,
“video/mpeg” => “mpg”,
“video/mpeg” => “mpeg”,
“video/mpeg” => “mpv2”,
“video/quicktime” => “mov”,
“video/quicktime” => “qt”,
“video/x-la-asf” => “lsf”,
“video/x-la-asf” => “lsx”,
“video/x-ms-asf” => “asf”,
“video/x-ms-asf” => “asr”,
“video/x-ms-asf” => “asx”,
“video/x-msvideo” => “avi”,
“video/x-sgi-movie” => “movie”,
“x-world/x-vrml” => “flr”,
“x-world/x-vrml” => “vrml”,
“x-world/x-vrml” => “wrl”,
“x-world/x-vrml” => “wrz”,
“x-world/x-vrml” => “xaf”,
“x-world/x-vrml” => “xof”);

Como verificar então?! Darei isso de lambuja:

// Definindo as extensões que podem ser aceitas
$acc = array(“jpg”, “zip”, “doc”);

foreach ( $acc as &$al ):
$acceptable[] = array_search( $al , $mime );
endforeach;

if ( !in_array( $_FILES[“nome_do_campo_file”][‘type’] , $acceptable ) ):
throw new Exception(“This filetype isn’t acceptable.”);
endif;

Espero ter sido útil!

Categorias:PHP
  1. Nenhum comentário ainda.
  1. No trackbacks yet.

Deixe um comentário