我一直在使用内置的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
,但仍然无法上传。
我也回应了Yii看到的mime_type,它与我在模型中的设置相匹配。
我只是有点迷失在其他什么地方和其他地方尝试解决这个问题。所以来自更有经验的人的任何帮助都会很棒
由于
强尼
答案 0 :(得分:1)
如果您查看CFileValidator::validateFile()
的实现,您会注意到Yii将使用finfo_file()
(自PHP 5.3.0起)或mime_content_type()
来查找您的MIME类型文件。
finfo_open()
通常会在PHP中使用捆绑的魔术数据库。但您可以通过设置MAGIC
环境变量来覆盖此问题,如here所述。mime_content_type()
将使用mime_magic.magicfile
配置设置因此,如果您检查PHP版本,则可以进一步调试或提供自定义魔术文件。