пʼятницю, 30 квітня 2010 р.

Визначення MIME Type

Досить часто виникає задача визначення MIME типу для файлів. Де-які розробники пишуть або використовують готові рішення, де MIME тип визначається за розширенням файлу. Не буду заперечувати, іноді цього може бути достатьньо.

Для визначення MIME типу за змістом файлу, можна використовувати системну утіліту file:
file -bi /path/to/file


Для PHP є застаріла функція mime_content_type, рекомендується використовувати функцію finfo_file PECL модулю Fileinfo.

Але інколи цього може бути недостатньо. Наприклад, MIME type файлів формату M$ Office 2007 (docx, xlsx, pptx) визначається як application/zip. Навіть де-які файли формату Open Document Format (Openoffice.org) визначаються як application/octet-stream.

У результаті богатьох експериментів, я визначив утіліту, яка, на мій погляд, найточніше визначає MIME тип файлу. Ця утіліта - gnomevfs-info.

Встановлення

Fedora:
sudo yum install gnome-vfs2

Debian:
sudo apt-get install libgnomevfs2-bin

І використання:

gnomevfs-info -s <path_to_file> | awk '{FS=":"} /MIME type/ {gsub(/^[ \t]+|[ \t]+$/, "",$2); print $2}'

Ця команда виведе лише MIME тип.

Додаткові опціі можна побачити, набравши:
gnomevfs-info --help