Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Określ typ MIME z kolumny MySQL

Jeśli twój host nadal używa PHP 5.2 i nie masz dostępu do funkcji fileinfo, możesz przetestować sygnaturę nagłówka plików (magiczne liczby), aby określić typ 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"; 
}

UWAGA: Niektóre sygnatury mogą pasować do części innych, na przykład sygnatura pliku PK Zip pasuje do pierwszych 4 bajtów sygnatury pliku archiwum java (.jar), dodatkowe instrukcje będą potrzebne w pętli foreach, aby określić poprawną sygnaturę dla mime wpisz , ale w Twojej sytuacji to powinno wystarczyć.

Zaktualizowaną listę sygnatur plików można znaleźć pod adresem http://www.garykessler.net/library /file_sigs.html jeśli ktoś potrzebuje więcej typów podpisów plików.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Obliczanie całkowitej ilości sprzętu dla zakresu dat

  2. czy dobrze jest przechowywać wartość dziesiętną jako varchar w mysql?

  3. Uporządkuj tabelę według odległości od określonej szerokości/długości geograficznej (przy użyciu MySQL+PHP)

  4. Biblioteka nie załadowana:błąd libmysqlclient.16.dylib podczas próby uruchomienia 'rails server' na OS X 10.6 z mysql2 gem

  5. Śledzenie wyświetleń banerów — projektowanie bazy danych