如何找出文件的 MIME 类型 (Content-Type)?
- 2024-10-31 08:38:00
- admin 原创
- 61
问题描述:
有没有办法在 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
解决方案 1:
使用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
解决方案 2:
您可以使用的其他工具(除了文件)是xdg-mime
例如xdg-mime query filetype <file>
如果你有 yum,
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
在上面的文件中仅将其显示为纯文本。
解决方案 3:
文件版本 < 5 :文件 -i -b /path/to/file
文件版本 >=5 :文件 --mime-type -b /path/to/file
解决方案 4:
尝试file
带有-i
选项的命令。
-i
选项使文件命令输出 mime 类型字符串,而不是更传统的人类可读字符串。因此它可以说text/plain; charset=us-ascii
而不是ASCII text
。
解决方案 5:
文件 --mime 有效,但 --mime-type 无效。至少对于我的 RHEL 5 来说是这样。
解决方案 6:
要检测 MIME 类型,请使用恰当命名的“ mimetype ”命令。
它有许多用于格式化输出的选项,甚至还有向后兼容“文件”的选项。
但最重要的是,它不仅接受文件输入,还接受通过 stdin/pipe 输入,因此您可以在处理流时避免使用临时文件。
相关推荐
热门文章
项目管理软件有哪些?
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 项目管理必备:盘点2024年13款好用的项目管理软件
热门标签
云禅道AD