Как я могу узнать тип MIME файла (Content-Type)?


есть ли способ узнать тип MIME (или он называется "Content-Type"?) файла в скрипте Linux bash?

причина, по которой мне это нужно, заключается в том, что ImageShack, похоже, нуждается в нем для загрузки файла, так как по какой-то причине он обнаруживает .png файл в виде .

Я проверил файл, и это действительно изображение PNG:

$ cat /1.png 
?PNG
(with a heap load of random characters)

это дает мне ошибку:

$ curl -F "fileupload=@/1.png" http://www.imageshack.us/upload_api.php
<links>
<error id="wrong_file_type">Wrong file type detected for file 1.png:application/octet-stream</error>
</links>

это работает, но мне нужно указать MIME-тип.

$ curl -F "fileupload=@/1.png;type=image/png" http://www.imageshack.us/upload_api.php
5 83

5 ответов:

использовать file. Примеры:

> file --mime-type image.png
image.png: image/png

> file -b --mime-type image.png
image/png

> file -i FILE_NAME
image.png: image/png; charset=binary

один из других инструментов (кроме файла) вы можете использовать xdg-mime

например xdg-mime query filetype <file>

если у вас есть Юм

yum install xdg-utils.noarch

пример сравнения xdg-mime и файла в файле Subrip (subtitles)

$ xdg-mime query filetype subtitles.srt
application/x-subrip

$ file --mime-type subtitles.srt
subtitles.srt: text/plain

в приведенном выше файле только показать его как обычный текст.

версия файла file-i-b /path/to/file
версия файла >=5: file --mime-type-b / path / to / file

попробовать file С .

-i опция заставляет команду file выводить строки типа mime, а не более традиционные для чтения человеком. Таким образом, он может сказать text/plain; charset=us-ascii, а не ASCII text.

file --mime работает, но не --mime-type. по крайней мере, для моего RHEL 5.