使用mime类型上传.docx

时间:2013-07-09 23:39:40

标签: php yii mime-types

我一直在使用内置的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-streamapplication/zip,但仍然无法上传。

我也回应了Yii看到的mime_type,它与我在模型中的设置相匹配。

我只是有点迷失在其他什么地方和其他地方尝试解决这个问题。所以来自更有经验的人的任何帮助都会很棒

由于

强尼

1 个答案:

答案 0 :(得分:1)

如果您查看CFileValidator::validateFile()的实现,您会注意到Yii将使用finfo_file()(自PHP 5.3.0起)或mime_content_type()来查找您的MIME类型文件。

因此,如果您检查PHP版本,则可以进一步调试或提供自定义魔术文件。