sql >> Databasteknik >  >> RDS >> Mysql

Bestäm mime-typ från MySQL-kolumnen

OM din värd fortfarande använder php 5.2 och inte har tillgång till filinformationsfunktionerna kan du testa filhuvudsignaturen (magiska siffror) för att bestämma mimetyp

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"; 
}

OBS: Vissa signaturer kan matcha delar av andra, till exempel matchar PK Zip-filsignaturen de första 4 byten av java archive (.jar) filsignatur, extra uttalanden skulle behövas i foreach loop för att bestämma den korrekta signaturen för mimen typ , men för din situation borde detta göra det.

En uppdaterad lista över filsignaturer finns på http://www.garykessler.net/library /file_sigs.html om någon behöver fler filsignaturtyper.



  1. SQL Server FOR XML Path gör repeterande noder

  2. uppdatera flera rader i en fråga men indata vi förväntar oss är från json-objektet med flera data

  3. hur man beräknar totalt antal lördagar och söndagar mellan två datum i mysql

  4. Två Laravel-applikationer på samma server i konflikt med varandra