php yii错误的mime类型与CFileHelper::getMimeType
要检查我上传的图像的正确mime类型:php yii错误的mime类型与CFileHelper::getMimeType,php,yii,xampp,mime-types,Php,Yii,Xampp,Mime Types,要检查我上传的图像的正确mime类型: $user->image = CUploadedFile::getInstance($user, 'image'); 在我的验证中,我使用以下选项检查mime类型: print_r(CFileHelper::getMimeType($this->image)); 嗯,我上传了一个pdf,mime类型是application/pdf。 我将pdf重命名为test.jpg,mime类型现在是image/jpg,这是一个问题。我只想接受图像 我
$user->image = CUploadedFile::getInstance($user, 'image');
在我的验证中,我使用以下选项检查mime类型:
print_r(CFileHelper::getMimeType($this->image));
嗯,我上传了一个pdf,mime类型是application/pdf。
我将pdf重命名为test.jpg,mime类型现在是image/jpg,这是一个问题。我只想接受图像
我使用最新版本:
yii-1.1.12.b600af;XAMPP Windows 1.8.0;PHP版本5.4.4,因为Yii默认根据扩展定义mime类型 如您所见,
$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'),
);
}
}
始终使用现有的东西,不要尝试重新创建。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);
请在此处阅读更多信息:
以我有限的经验,finfo_open()工作得很好。这是不对的。正如您在源代码中看到的,首先检查finfo_open是否存在,然后使用它。如果没有,请使用mime\u内容\u类型,最后一个是通过扩展来检查它。在我的例子中,它使用finfo_open.sry,在我的例子中,它使用扩展名,因为我发现了对未定义函数finfo_open()的调用和对未定义函数mime_content_type()的调用。若您在那个里设置false作为第三个参数,它只返回null,若您满足此要求,它将解决所有问题:。yii可以使用you have finfo_open函数。php已满足,但pecl应为pecl fileinfo>=0.1.0finfo\u open已停用。。。但现在我无法打开流:没有这样的文件或目录。似乎它无法检查尚未上传的文件…当然,如果没有文件,它会失败,那么我们可以使用哪种mime类型。其实你为什么要知道?为了验证?如果是,则已为此目的内置验证。如果没有,则上载文件并使用CfileUploader保存,然后调用getMimeType方法。
$finfo = finfo_open(FILEINFO_MIME_TYPE); // return mime type ala mimetype extension
$mediaFile->filemime = finfo_file($finfo, $fileName);
/* close connection */
finfo_close($finfo);