Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Tentukan tipe mime dari kolom MySQL

JIKA host Anda masih menggunakan php 5.2 dan tidak memiliki akses ke fungsi fileinfo, Anda dapat menguji tanda tangan header file (angka ajaib) untuk menentukan tipe 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"; 
}

CATATAN: Beberapa tanda tangan mungkin cocok dengan sebagian yang lain, misalnya tanda tangan file PK Zip cocok dengan 4 byte pertama tanda tangan file arsip java (.jar), pernyataan tambahan akan diperlukan di loop foreach untuk menentukan tanda tangan yang benar untuk mime ketik , tetapi untuk situasi Anda, ini harus dilakukan.

Daftar tanda tangan file yang diperbarui dapat ditemukan di http://www.garykessler.net/library /file_sigs.html jika seseorang membutuhkan lebih banyak jenis tanda tangan file.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Laravel Migrasi menambahkan bidang setelah data ada di tabel?

  2. Bagaimana cara memasukkan catatan dengan fungsi MySQL SEKARANG () di MySQLi dengan bind_param?

  3. Impor file csv besar ke database mysql menggunakan php

  4. Mengambil hasil baris tunggal tanpa mengulangi dalam lingkaran dari Mysql menggunakan Java

  5. HikariCP terlalu banyak koneksi