определение mime-типа файла

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

определение mime-типа файла

Сообщение minoshi » 14.03.2014 20:26:33

Доброго времени суток!

Вроде где-то была такая тема, но найти не смог.

Задача : определение mime-типа файла.
Платформа : линукс.

Найденные мною решения:
1) Magic4Lazarus (функция DetectMimeFromFile)
2) собственный код: через tprocess выполняется команда "file --mime-type <имя файла>", парсится вывод.

Оба решения выполняют свою задачу, но очень медленны. 200 файлов Magic4Lazarus обработал за 8 секунд, мой код на 10 секунд.

Если более быстрый метод?
Аватара пользователя
minoshi
постоялец
 
Сообщения: 279
Зарегистрирован: 17.05.2008 21:23:38

Re: определение mime-типа файла

Сообщение alexs » 14.03.2014 21:06:01

http://habrahabr.ru/post/186828/
Такой путь не устроит?
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: определение mime-типа файла

Сообщение minoshi » 15.03.2014 09:58:34

alexs писал(а):http://habrahabr.ru/post/186828/
Такой путь не устроит?

Т.е. фактически сдублировать работу file?
Аватара пользователя
minoshi
постоялец
 
Сообщения: 279
Зарегистрирован: 17.05.2008 21:23:38

Re: определение mime-типа файла

Сообщение alexs » 15.03.2014 11:31:10

А есть другой путь? Либо искать готовые библиотеки.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: определение mime-типа файла

Сообщение Дож » 15.03.2014 14:19:07

Оба решения выполняют свою задачу, но очень медленны. 200 файлов Magic4Lazarus обработал за 8 секунд, мой код на 10 секунд.


Кэширование?
Аватара пользователя
Дож
энтузиаст
 
Сообщения: 899
Зарегистрирован: 12.10.2008 16:14:47

Re: определение mime-типа файла

Сообщение hinst » 17.03.2014 14:54:41

Посмотрите как вот здесь сделано:
FPCpackagesfcl-webexampleshttpserversimplehttpserver.pas

Добавлено спустя 5 минут 18 секунд:
В линуксе лежат mime-типы в файле:
/etc/mime.types
Модуль fpmimetypes содержит такой класс: TFPMimeTypes, там есть метод LoadFromFile, вот в экземпляр этого класса надо загрузить файл /etc/mime.types, затем можно будет вызывать метод того же класса GetMimeType для получения mime-типа по расширению

Добавлено спустя 1 минуту 14 секунд:
наверняка будет работать всё очень быстро потому, что mime-типы в таком случае загружаются один раз, новые процессы не запускаются
Аватара пользователя
hinst
энтузиаст
 
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

Re: определение mime-типа файла

Сообщение Дож » 17.03.2014 15:16:16

наверняка будет работать всё очень быстро потому, что mime-типы в таком случае загружаются один раз, новые процессы не запускаются

Кажется, что проблема не в новых процессах, — батч режим программы file работает так же по скорости, как и отдельные вызовы file.
Аватара пользователя
Дож
энтузиаст
 
Сообщения: 899
Зарегистрирован: 12.10.2008 16:14:47


Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12

Рейтинг@Mail.ru