Подтвердить что ты не робот

Как я могу узнать файлы "mime-type (Content-Type?)"?

Есть ли способ узнать MIME-TYPE (или называется "Content-Type"...) файла в linux bash script?

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

Я проверил файл, и это действительно .png

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

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

$ curl -F "[email protected]/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-TYPE.

$ curl -F "[email protected]/1.png;type=image/png" http://www.imageshack.us/upload_api.php
4b9b3361

Ответ 1

Используйте 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

Ответ 2

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

eg xdg-mime query filetype query filetype <file>

если у вас есть yum,

yum install xdg-utils.noarch

Пример сравнения xdg-mime и файла в файле Subrip (субтитры)

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

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

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

Ответ 3

версия файла < 5: файл -i -b/путь/в/файл
версия файлa >= 5: файл --mime-type -b/path/to/file

Ответ 4

Попробуйте file с опцией -i.

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

Ответ 5

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