Mysql
 sql >> база данни >  >> RDS >> Mysql

Определете тип mime от MySQL колона

АКО вашият хост все още използва php 5.2 и няма достъп до функциите за информация за файла, можете да тествате подписа на заглавката на файловете (магически числа), за да определите типа 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 съвпада с първите 4 байта от подписа на файла в архива на Java (.jar), ще са необходими допълнителни изрази в цикъла foreach, за да се определи правилният подпис за mime вида , но за вашата ситуация това би трябвало.

Актуализиран списък с файлови подписи може да бъде намерен на http://www.garykessler.net/library /file_sigs.html ако някой има нужда от повече типове файлови подписи.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Обяснете плана в производителността на mysql, като използвате Using temporary; Използване на сортиране на файлове; Използване на условие за индекс

  2. дублиран празен ред, въведен в mysql при качване на файл

  3. Методът за удостоверяване „mysql_old_password“ не се поддържа

  4. Как да актуализирате PDF файл, който вече е добавен към базата данни в PHP?

  5. Записване на информация за кредитна карта в MySQL база данни?