Intereting Posts
PHP: загрузка нескольких фотографий с использованием <input type = 'file'> с тем же именем Простые перезаписи в Zend Framework найти определенные недели в месяц, используя php WooCommerce – обрабатывать элементы корзины отдельно, если количество больше 1 PHP gettext в Windows Javascript / PHP Добавить значения флажка для ввода текста Как бы вы создали строку из всех символов UTF-8? Вставка списка значений не соответствует списку столбцов: 1136 Число столбцов не соответствует количеству значений Комментарии PHPDoc в Notepad ++? Система не может найти указанный файл. – ошибка в Chrome на PHP-файлах Невозможно реализовать два интерфейса, которые имеют одно и то же имя метода Как изменить имя Zend_Db_Table в модели для вставки в несколько таблиц Автоматически обновлять токен с помощью google drive api с помощью php-скрипта Woocommerce Получить заказы на странице благодарности и передать данные javascript-фрагмент Что быстрее; включая другой файл или запрос базы данных MySQL в PHP?

Определить тип mime из столбца MySQL

Я получил экспортированную базу данных из MSAccess (не мой любимый), и я импортировал ее в таблицу MySQL. Существует столбец с именем «customerImage» и является «длинным BLOB» с атрибутом «binary». Как определить тип Mime? Я пробовал разные методы, но все они должны быть файлом, но данными.

Если бы кто-то мог мне помочь с PHP-кодом или командой MySQL, было бы здорово.

Если ваш хост все еще использует php 5.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 соответствует первым 4 байтам подписи файла java-архива (.jar), в инструкции foreach необходимо будет указать дополнительные инструкции для определения правильной сигнатуры для типа mime , но для вашей ситуации это должно быть сделано.

Обновленный список сигнатур файлов можно найти по адресу http://www.garykessler.net/library/file_sigs.html, если кому-то требуется больше типов сигнатур файлов.

Расширение FileInfo и, более конкретно, его finfo_buffer() могут помочь здесь (цитирование) :

Эта функция используется для получения информации о двоичных данных в строке.

Извлечение двоичных данных из базы данных и передача ее этой функции может сделать трюк.

Примечание: он поставляется с PHP> = 5.3

Сохраните blob в временном файле и используйте на нем функцию php finfo_file .

Можно использовать расширение FileInfo . Он содержит функцию finfo_buffer()