Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php yii错误的mime类型与CFileHelper::getMimeType_Php_Yii_Xampp_Mime Types - Fatal编程技术网

php yii错误的mime类型与CFileHelper::getMimeType

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,这是一个问题。我只想接受图像 我

要检查我上传的图像的正确mime类型:

 $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);