Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MSOFFICE MIME type verification

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 am getting "application/vnd.ms-office" as the filetype for any MSOFFICE file that I attempt to upload. I DO NOT wish to allow all MSOFFICE files, only .DOC's. Is there a workaround for this?

**Please note that these MSOFFICE type files were created in OPENOFFICE, would this make a difference?

like image 550
V1GG3N Avatar asked Nov 03 '12 23:11

V1GG3N


People also ask

How do I know MIME type?

For detecting MIME-types, use the aptly named "mimetype" command. It has a number of options for formatting the output, it even has an option for backward compatibility to "file". But most of all, it accepts input not only as file, but also via stdin/pipe, so you can avoid temporary files when processing streams.

What is a correct MIME type for .docx .pptx etc?

Here are the correct Microsoft Office MIME types for HTTP content streaming: Extension MIME Type. .doc application/msword. .dot application/msword. .docx application/vnd.openxmlformats-officedocument.wordprocessingml.document.

What is the MIME type for Xlsx?

MS Excel has the following observed MIME types: application/vnd. ms-excel (official) application/msexcel.


1 Answers

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

If you have access to Apache, you can add the correct MIME in 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
like image 89
Gabriel Santos Avatar answered Oct 11 '22 21:10

Gabriel Santos