1

我一直在使用内置的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>'), 

我在 Yii 的 mimeTypes.php 文件中添加了 .docx 扩展名:

'docx'=>'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 

我也将此添加到我的 apache/conf/mime.type

application/vnd.openxmlformats-officedocument.wordprocessingml.document docx

我还阅读了有关该主题的内容,发现这些文件通常被视为 zip 并添加了 mimeType application/octet-streamapplication/zip但它仍然不会上传。

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

我只是有点迷失了还有什么以及在哪里可以尝试解决这个问题。因此,更有经验的人的任何帮助都会很棒

谢谢

强尼

4

1 回答 1

1

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

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

于 2013-07-12T07:27:36.810 回答