如何找出文件的MIME类型(Content-Type)?

时间:2010-02-09 06:20:21

标签: linux bash content-type mime mime-types

有没有办法在Linux bash脚本中找出文件的MIME类型(或称为“Content-Type”?)?

我需要它的原因是因为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 个答案:

答案 0 :(得分:180)

使用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

答案 1 :(得分:21)

您可以使用的另一个工具(除文件外)是xdg-mime

例如xdg-mime query filetype <file>

如果你有百胜,

yum install xdg-utils.noarch

Subrip(字幕)文件中xdg-mime和文件的示例比较

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

$ file --mime-type subtitles.srt
subtitles.srt: text/plain
上述文件中的

仅将其显示为纯文本。

答案 2 :(得分:9)

文件版本&lt; 5:文件-i -b / path / to / file
文件版本&gt; = 5:文件--mime-type -b / path / to / file

答案 3 :(得分:2)

使用-i选项尝试file命令。

-i选项使file命令输出mime类型字符串,而不是更传统的人类可读字符串。因此,它可能会说text/plain; charset=us-ascii而不是ASCII text

答案 4 :(得分:1)

file --mime有效,但不是--mime-type。至少对我的RHEL 5来说。