有没有办法找出MIME类型(或者它被称为“内容类型”?))的文件的一个Linux bash脚本?
我需要它的原因是因为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
型
6条答案
按热度按时间ecfdbz9o1#
使用
file
。示例:字符串
cczfrluj2#
您可以使用的另一个工具(除了文件)是
xdg-mime
例如
xdg-mime query filetype <file>
如果你有好吃东西,
yum install xdg-utils.noarch
个一个xdg-mime和文件的例子比较子(字幕)文件
字符串
在上面的文件中只显示为纯文本。
0yycz8jy3#
**文件版本< 5:**file -i -B /path/to/file
**file version >=5:**file --mime-type -B /path/to/file
mo49yndu4#
尝试使用
-i
选项执行file
命令。-i
选项使file命令输出mime类型的字符串,而不是更传统的人类可读字符串。因此,它可以说text/plain; charset=us-ascii
而不是ASCII text
。bvpmtnay5#
file --mime可以工作,但不是--mime-type。至少对于我的RHEL 5来说。
tuwxkamq6#
要检测MIME类型,请使用恰当命名的“mimetype”命令。
它有许多用于格式化输出的选项,它甚至有一个向后兼容到“文件”的选项。
但最重要的是,它不仅以文件的形式接受输入,而且还通过stdin/pipe接受输入,因此在处理流时可以避免临时文件。