0

アップロードした画像で正しい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

4

2 に答える 2

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

常に既存のものを使用し、再作成しようとしないでください。

于 2012-09-27T00:41:20.607 に答える
0

PHPは、ファイルのコンテンツからmimetypeを実際に抽出しようとするfinfo_open()を提供します。そのように使用します:

$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()はうまく機能します。

于 2012-09-27T10:13:47.440 に答える