MSOFFICE MIME类型验证 [英] MSOFFICE MIME type verification

查看:174
本文介绍了MSOFFICE MIME类型验证的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  $ mimeTypes = array('application / msword'); //曾经是一个数组

$ finfo = new finfo(FILEINFO_MIME,/ usr / share / misc / magic);


$ type = $ finfo-> file($ _ FILES ['userfile'] ['tmp_name']);
$ mime = substr($ type,0,strpos($ type,';'));

$ b $ if(in_array($ mime,$ mimeTypes))
{//让它进入

问题在于我正在将application / vnd.ms-office作为我试图上传的任何MSOFFICE文件的文件类型。我不希望允许所有MSOFFICE文件,只有.DOC的。有没有解决方法?



请注意,这些MSOFFICE类型文件是在OPENOFFICE中创建的,这会有所作为吗?

解决方案

最好的办法是在知道文件是Office文档( application / vnd.ms-office )后验证文件扩展名。手动设置当前文件的正确MIME。

如果你有权访问Apache,你可以在 conf / mime.types

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

Office的MIME类型列表(来自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。模板
.docm ap plication / 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


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?

解决方案

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

这篇关于MSOFFICE MIME类型验证的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆