Узнайте тип MIME и связанные приложения с Qt - PullRequest
4 голосов
/ 22 апреля 2011

Как я могу узнать mime-тип или тип содержимого данного файла? Я не могу использовать суффикс, поскольку файл может быть переименован.

Возможные добавления будут классифицировать их как jpg, gif, png и т. Д. Являются файлами изображений и могут быть открыты путем редактирования приложений, которые были установлены в ОС.

Заранее спасибо.

Ответы [ 5 ]

1 голос
/ 22 апреля 2011

Это может помочь, это с C #, но я думаю, что вы можете понять идею.

http://kseesharp.blogspot.com/2008/04/c-get-mimetype-from-file-name.html

Вы можете использовать некоторый класс для доступа к реестру Windows из qt или использованияWindows API напрямую из qt.

Я не программист qt.

1 голос
/ 22 апреля 2011

Вы не можете, не из Qt.

Однако, если все, что вам нужно, это показать файл с правильным приложением, вы можете использовать QDesktopServices :: openUrl () , который охватывает open (Windows / OSX) и xdg-open (Unix).URL-адрес также может быть локальным файлом (в этом случае используйте QUrl :: fromLocalFile () для создания URL-адреса).

1 голос
/ 22 апреля 2011

Какая платформа?В * nix вы должны ссылаться на то, как это делает программа file, которая основана на нескольких эвристических методах, включая проверку первых нескольких байтов файла (многие форматы файлов начинаются с фиксированного заголовка, включая многие форматы изображений).

Если вы работаете в Windows, команда * nix file, вероятно, все еще поучительна, даже если вы не можете повторно использовать ее код как напрямую.Может также быть какое-то лучшее решение в API Windows (я не программист Windows).

0 голосов
/ 01 марта 2013

Не похоже, что Qt предлагает такую ​​возможность. Однако вы можете заглянуть в библиотеку libmagic, которая выполняет действия file и других подобных команд. Предполагая, что библиотека поддерживается должным образом, она будет включать новые типы MIME с течением времени. Из того, что я могу сказать, это часть набора инструментальных файлов. В системе Debian сделайте что-то вроде этого:

sudo apt-get install libmagic-dev

чтобы получить библиотеку разработки и использовать #include для ее использования.

0 голосов
/ 22 апреля 2011

Для классификации файлов изображений.Для Qt и только для файлов изображений.

QByteArray imageFormat = QImageReader::imageFormat(fileName); //Where fileName - path to your file

Дальнейшее отображение imageFormat в mime-type не сложно

...