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


107

有没有一种方法可以找出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

Answers:


228

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

如果您在Windows下使用Git bash,则不会。
tivo 2011年

1
为了让:MIME类型,你可以做file --mime-type FILE_NAME | awk '{print $2}'
贾斯汀·詹金斯

23
@JustinJenkins -b省略了文件名,因此file -b --mime-type FILE_NAME仅返回mime类型
jaygooby 2013年

kmimetypefinder filename
bitek

无法识别application/xmltext/xml
Tseng 2015年

24

您可以使用的其他工具之一(除文件外)是 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

在上面的文件中,仅将其显示为纯文本。


xdg-mime查询文件类型install.sql; xprop:无法打开显示”
编码器

xdg-mime是一个bash脚本,它严重依赖于环境变量。如果您未登录会话,则未设置其中的某些参数,例如DE。亲自检查一下$ less $(which xdg-mime)
ManuelSchneid3r 2014年

10

文件版本<5:文件-i -b / path / to /文件
文件版本> = 5:文件--mime-type -b / path / to / file


1
文件版本是什么意思?
user2867106'4

1
@ user2867106我认为他的意思是file命令的版本。
jgh fun-run

4

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

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


2

文件--mime有效,但--mime类型无效。至少对于我的RHEL 5。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.