Как я могу узнать MIME-тип файла (Content-Type)? - PullRequest
91 голосов
/ 09 февраля 2010

Есть ли способ узнать тип MIME (или он называется "Content-Type"?) Файла в скрипте bash 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-TYPE.

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

Ответы [ 5 ]

183 голосов
/ 09 февраля 2010

Используйте 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
21 голосов
/ 09 февраля 2010

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

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

если у вас есть ням,

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

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

9 голосов
/ 05 сентября 2013

версия файла <5: </strong> файл -i -b / path / to / file
версия файла> = 5: файл - MIME-тип -b / path / to / file

2 голосов
/ 09 февраля 2010

Попробуйте команду file с параметром -i.

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

1 голос
/ 30 мая 2012

Файл - Mime работает, но не - MIME-тип. по крайней мере для моего RHEL 5.

...