我一直在使用内置的mimeTypes验证器通过Yii上传文件。不过,我似乎无法接受.docx文件或.rtf文件。目前我有这样的代码:
模型
array('file', 'file', 'on' => 'insert', 'safe'=>true, 'maxSize'=> 512000, 'maxFiles'=> 1,
'mimeTypes' => 'application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document, text/rtf, text/plain',
'tooLarge'=> 'File cannot be larger than 500KB.',
'wrongMimeType'=> 'Format must be:<code>.doc</code> <code>.docx</code> <code>.txt</code> <code>.rtf</code>'), 我将.docx扩展名添加到Yii的mimeTypes.php文件中,并使用以下行:
'docx'=>'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 我还将其添加到apache/conf/mime.type中。
application/vnd.openxmlformats-officedocument.wordprocessingml.document docx我也读过关于这个主题的文章,并且经常看到这些文件被看作是压缩文件,并添加了mimeType、application/octet-stream和application/zip,而且它仍然不会上传。
我也呼应了mime_type Yii所看到的,它与我在模型中的设置相匹配。
我只是有点不知所措,不知道还有什么地方可以试着解决这个问题。所以来自更有经验的人的任何帮助都是很棒的
谢谢
琼尼
发布于 2013-07-12 07:27:36
如果查看CFileValidator::validateFile()的实现,您会注意到Yii要么使用finfo_file() (自PHP5.3.0以来),要么使用mime_content_type()来查找文件的MIME类型。
finfo_open()通常会在PHP中使用捆绑的魔术数据库。但是,您可以通过设置一个MAGIC环境变量(如解释的here )来覆盖这一点。mime_content_type()将使用mime_magic.magicfile配置设置中指定的神奇文件。因此,如果您检查PHP版本,您可以进一步调试或提供您的自定义魔术文件。
https://stackoverflow.com/questions/17560107
复制相似问题