Type check MSOFFICE MIME

I have the following:

$mimeTypes = array('application/msword'); //used to be an array $finfo = new finfo(FILEINFO_MIME, "/usr/share/misc/magic"); $type = $finfo->file($_FILES['userfile']['tmp_name']); $mime = substr($type, 0, strpos($type, ';')); if (in_array($mime, $mimeTypes)) { //let it in 

The problem is that I get "application / vnd.ms-office" as a file for any MSOFFICE file that I am trying to download. I DO NOT want to allow all MSOFFICE files, only .DOC. Is there a workaround for this?

** Please note that these files of type MSOFFICE were created in OPENOFFICE, will it matter?

+7
source share
1 answer

The best you can do is check the file extension after you know that the file is an Office document ( application/vnd.ms-office ) and manually sets the correct MIME for the current file.

If you have access to Apache, you can add the correct MIME to conf/mime.types

 application/msword doc application/vnd.ms-excel xls [..] etc 

List of Office MIME types (from http://filext.com/faq/office_mime_types.php )

 .doc application/msword .dot application/msword .docx application/vnd.openxmlformats-officedocument.wordprocessingml.document .dotx application/vnd.openxmlformats-officedocument.wordprocessingml.template .docm application/vnd.ms-word.document.macroEnabled.12 .dotm application/vnd.ms-word.template.macroEnabled.12 .xls application/vnd.ms-excel .xlt application/vnd.ms-excel .xla application/vnd.ms-excel .xlsx application/vnd.openxmlformats-officedocument.spreadsheetml.sheet .xltx application/vnd.openxmlformats-officedocument.spreadsheetml.template .xlsm application/vnd.ms-excel.sheet.macroEnabled.12 .xltm application/vnd.ms-excel.template.macroEnabled.12 .xlam application/vnd.ms-excel.addin.macroEnabled.12 .xlsb application/vnd.ms-excel.sheet.binary.macroEnabled.12 .ppt application/vnd.ms-powerpoint .pot application/vnd.ms-powerpoint .pps application/vnd.ms-powerpoint .ppa application/vnd.ms-powerpoint .pptx application/vnd.openxmlformats-officedocument.presentationml.presentation .potx application/vnd.openxmlformats-officedocument.presentationml.template .ppsx application/vnd.openxmlformats-officedocument.presentationml.slideshow .ppam application/vnd.ms-powerpoint.addin.macroEnabled.12 .pptm application/vnd.ms-powerpoint.presentation.macroEnabled.12 .potm application/vnd.ms-powerpoint.template.macroEnabled.12 .ppsm application/vnd.ms-powerpoint.slideshow.macroEnabled.12 
+10
source

All Articles