Ответ 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
Есть ли способ узнать 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
Используйте 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
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
в приведенном выше файле показывает только его как обычный текст.
версия файла < 5: файл -i -b/путь/в/файл
версия файлa >= 5: файл --mime-type -b/path/to/file
Попробуйте file
с опцией -i
.
-i
option Заставляет команду file выводить строки типа mime, а не более традиционные для чтения человеком. Таким образом, он может сказать text/plain; charset=us-ascii
, а не ASCII text
.
file --mime работает, но не --mime-type. по крайней мере для моего RHEL 5.