当前位置: 首页 > 知识库问答 >
问题:

php yii错误的mime类型,带有CFileHelper::getMimeType

赵修诚
2023-03-14

要检查我上传的图像的正确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

共有2个答案

谷梁建中
2023-03-14

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()工作得很好。

万俟玉书
2023-03-14

因为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'),
        );
    }
}

总是使用现有的东西,不要试图重新创造。

 类似资料:
  • MIME(多用途Internet邮件扩展)类型告诉浏览器如何处理某些类型的文件。 当文件发送到您网站访问者的浏览器时,它也会发送该文件的MIME类型。 MIME类型告诉浏览器文件类型以及如何将文件提供给用户。 例如,如果将.js文件发送到浏览器,则还会发送application/JavaScript MIME类型以告知浏览器.js文件是JavaScript文件,浏览器会相应地处理该文件。 大多数M

  • 我正在尝试将服务人员添加到现有的angular(5.2,CLI 1.7.1)应用程序中。我做了我应该做的一切: > 我甚至尝试将这段代码(我在某处找到了解决方案)添加到main。ts 但我有一个错误: 未捕获(promise中)DOMExc0019:注册ServiceWorker失败:脚本具有不受支持的MIME类型('text/html')。 错误:未捕获(promise中):安全错误:注册Ser

  • 由于以下错误,服务人员未注册 服务人员登记册 作为github问题发布:https://github.com/facebook/create-react-app/issues/8593 Service Worker在尝试注册时出现以下错误: 在Service Worker注册过程中出错: DOMExc0019:无法使用脚本(http://localhost:3000/sw.js)为作用域('htt

  • 最初设计MIME(多用途Internet邮件扩展)媒体类型,以便电子邮件可以包括除纯文本之外的信息。 MIME媒体类型表示以下内容 - 消息的不同部分(如文本和附件)如何组合到消息中。 指定消息的每个部分的方式。 编码不同项目以进行传输的方式,以便即使设计为仅使用ASCII文本的软件也可以处理该消息。 现在MIME类型不只是用于电子邮件; 它们已经被Web服务器采用,作为告诉Web浏览器向他们发送

  • 我在抽象课上有以下内容... 还有另一个类,它继承了这个类... 当我从主类执行以下调用时,我收到一个错误... 我的问题是..为什么会发生这种情况?我的getEntityById不是返回T型的东西,在这种情况下应该是产品吗? 我在 Netbeans 中工作,编译时未显示任何错误。 感谢您的帮助=)

  • 我正在使用带有express服务器的create react应用程序。 有一个预配置的ServiceWorker,用于缓存本地资产(https://github.com/facebook/create-react-app/blob/master/packages/react-scripts/template/README.md#making-a-progressive-web-app)。 当我试图