Существует ли способ узнать тип MIME (или это называют "Типом контента"?) файла в Linux колотят сценарий?
Причина мне нужен он, состоит в том, потому что ImageShack, кажется, нужен он для загрузки файла, что касается некоторой причины, это обнаруживает .png файл как application/octet-stream
файл.
Я проверил файл, и это действительно - изображение 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
Используйте файл
. Examples:
> 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
если у вас есть 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
в приведенном выше файле показывает его только как простой текст.
Попробуйте выполнить команду file
с параметром -i
.
-i
параметр Заставляет команду file выводить строки типа mime, а не более традиционные, удобочитаемые человеком. Таким образом, он может сказать text / plain; charset = us-ascii
, а не текст ASCII
.