linux 我如何找到一个文件的MIME类型(内容类型)?

zbsbpyhn  于 2023-08-03  发布在  Linux
关注(0)|答案(6)|浏览(187)

有没有办法找出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

ecfdbz9o

ecfdbz9o1#

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

字符串

cczfrluj

cczfrluj2#

您可以使用的另一个工具(除了文件)是xdg-mime
例如xdg-mime query filetype <file>
如果你有好吃东西,
yum install xdg-utils.noarch
一个xdg-mime和文件的例子比较子(字幕)文件

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

$ file --mime-type subtitles.srt
subtitles.srt: text/plain

字符串
在上面的文件中只显示为纯文本。

0yycz8jy

0yycz8jy3#

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

mo49yndu

mo49yndu4#

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

bvpmtnay

bvpmtnay5#

file --mime可以工作,但不是--mime-type。至少对于我的RHEL 5来说。

tuwxkamq

tuwxkamq6#

要检测MIME类型,请使用恰当命名的“mimetype”命令。
它有许多用于格式化输出的选项,它甚至有一个向后兼容到“文件”的选项。
但最重要的是,它不仅以文件的形式接受输入,而且还通过stdin/pipe接受输入,因此在处理流时可以避免临时文件。

相关问题