sql >> データベース >  >> RDS >> Mysql

MySQL列からmimeタイプを判別します

    ホストがまだphp5.2を使用していて、fileinfo関数にアクセスできない場合は、ファイルのヘッダー署名(マジックナンバー)をテストして、mimeタイプを判別できます

    function mimetype($data)
    {
        //File signatures with their associated mime type
        $Types = array(
        "474946383761"=>"image/gif",                        //GIF87a type gif
        "474946383961"=>"image/gif",                        //GIF89a type gif
        "89504E470D0A1A0A"=>"image/png",
        "FFD8FFE0"=>"image/jpeg",                           //JFIF jpeg
        "FFD8FFE1"=>"image/jpeg",                           //EXIF jpeg
        "FFD8FFE8"=>"image/jpeg",                           //SPIFF jpeg
        "25504446"=>"application/pdf",
        "377ABCAF271C"=>"application/zip",                  //7-Zip zip file
        "504B0304"=>"application/zip",                      //PK Zip file ( could also match other file types like docx, jar, etc )
        );
    
        $Signature = substr($data,0,60); //get first 60 bytes shouldnt need more then that to determine signature
        $Signature = array_shift(unpack("H*",$Signature)); //String representation of the hex values
    
        foreach($Types as $MagicNumber => $Mime)
        {
            if( stripos($Signature,$MagicNumber) === 0 )
                return $Mime;  
        }
    
        //Return octet-stream (binary content type) if no signature is found
        return "application/octet-stream"; 
    }
    

    注: 一部の署名は他の署名と一致する場合があります。たとえば、PK Zipファイルの署名はJavaアーカイブ(.jar)ファイルの署名の最初の4バイトと一致します。mimeの正しい署名を判別するには、foreachループで追加のステートメントが必要になります。タイプ 、しかしあなたの状況ではこれで十分です。

    ファイル署名の更新されたリストは、http://www.garykessler.net/libraryにあります。 /file_sigs.html より多くのファイル署名タイプが必要な場合。



    1. ユーザーに対してCREATEコマンドが拒否されましたか?

    2. MariaDBによるデータベースの破損:テーブルがエンジンに存在しません

    3. SQL ServerでMONEYまたはDECIMAL(x、y)データ型を選択する必要がありますか?

    4. MySQLテーブルからランダムな行を1つ選択する際の問題