想检查我上传的图像是否适合mime类型:
$user->image = CUploadedFile::getInstance($user, 'image');
在我的验证中,我用以下方法检查mime类型:
print_r(CFileHelper::getMimeType($this->image));
好吧,我上传了一个pdf和mime类型是application / pdf。 我将pdf重命名为test.jpg,而mime类型现在是image / jpg,这是一个问题。我只是想接受图像。
我使用的是最新版本: 警予,1.1.12.b600af; XAMPP Windows 1.8.0; PHP版本5.4.4
答案 0 :(得分:2)
因为Yii默认根据扩展名定义mime类型。
public static function getMimeType($file,$magicFile=null,$checkExtension=true){//code}
如您所见$checkExtension=true
。
您可以这样尝试:
print_r(CFileHelper::getMimeType($this->image, null, false));
所以它不会通过扩展来决定。
出于验证目的:
class Item extends CActiveRecord
{
public $image;
public function rules()
{
return array(
array('image', 'file', 'mimeTypes'=>'image/gif, image/jpeg'),
);
}
}
总是使用现有的东西,不要试图重新创建。
答案 1 :(得分:0)
PHP提供了finfo_open(),它实际上试图从文件内容中提取mimetype。像这样使用:
$finfo = finfo_open(FILEINFO_MIME_TYPE); // return mime type ala mimetype extension
$mediaFile->filemime = finfo_file($finfo, $fileName);
/* close connection */
finfo_close($finfo);
在此处阅读更多内容:http://php.net/manual/en/function.finfo-open.php
在我有限的经验中,finfo_open()效果很好。