我想知道是否可以更改 Node 上文件的 mime 类型。我已经检查了许多 mime 类型的模块,但所有这些模块都只是为了从文件和系统中获取信息。
我想实现的是将一些文件压缩到一个文件中,然后更改 mime 类型。通过这种方式,我可以检查文件类型是否适合我的应用程序。
我知道操作系统之间存在差异:
- 窗户。我更改了扩展名,它完成了
- 乌班图。我必须处理哑剧类型。这就是我想改变的
- 麦克。他们有一个类似于Ubuntu的系统。
如何在 Ubuntu 或 Mac 上实现这一点?
假设我可以做到,并且我刚刚在 Ubuntu 上更改了 zip 文件的 mime 类型,它是否仍然会被系统检测为 zip 文件?
如果这一切都不可能。如何创建使用不同文件构建的自己的文件?
例如,我想将所有这些压缩的文件包含在名为filename.foo
的打包文件中:
- 包含元数据的 XML 文件
- 一个文本文件
- 一个 CSV 文件
- 一张图片
最后,我更改了文件扩展名并向系统添加了一个新的MIME-TYPE。通过这种方式,Nautilus(Ubuntu)和Windows资源管理器可以识别具有新类型的文件。
当我使用命令file --mime-type
时,我仍然检测到zip哑剧类型。但这还不错,因为我可以使用此检测来避免我的应用程序中的错误。
为鹦鹉螺创建您自己的 MIME 类型
-
在
/usr/share/mime/packages/
中使用此内容创建新的 XML:<?xml version="1.0" encoding="UTF-8"?> <mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'> <mime-type type="application/todo"> <comment>Todos Text file</comment> <glob pattern="*.TODO"/> <glob pattern="*.todo"/> </mime-type> </mime-info>
-
执行以下命令更新 mime 数据库
sudo update-mime-database /usr/share/mime
为新扩展分配图标
第一步是将图标重命名为应用程序待办事项,并且它必须位于 svg 扩展中。
如果您使用的是 gnome,则必须将图标移动到/usr/share/icons/gnome/scalable
然后更新缓存
$ sudo gtk-update-icon-cache /usr/share/icons/gnome -f
如果您使用的是 unity,请将其移动到/usr/share/icons/Humanity/mimes/
然后更新缓存
$ sudo gtk-update-icon-cache /usr/share/icons/Humanity -f
刷新一下你的鹦鹉螺,你会有一个带有图标的新哑剧类型
大多数高级应用程序使用文件扩展名来确定适当的MIME类型。
OS X,Linux和UNIX系统可以使用"file"命令,该命令使用预编译的标头数据库和MIME类型唯一标识符存在的偏移量;请参阅/usr/share/misc/magic.mgc
虽然我只能想到一个将创建的存档修改为其他 mime 类型的原因,这无疑是邪恶的,但可能需要十六进制编辑存档以在正确的偏移量处创建/假装关联的签名。
当然,这将要求节点模块在提取之前首先剥离这个不必要的标头。