我想知道我是否可以在Node上更改文件的mime类型。我检查过许多mime类型的模块,但所有这些模块只是从文件和系统中获取信息。
我想要实现的是将一些文件压缩到一个文件中,然后更改mime类型。通过这种方式,我可以检查文件类型是否适合我的应用程序。
我知道操作系统之间存在差异:
如何在Ubuntu或Mac上实现这一目标?
假设我可以这样做而且我刚刚更改了Ubuntu上的zip文件的mime类型,它是否仍然会被系统检测为zip文件?
如果所有这一切都不可能。如何创建使用不同文件构建的自己的文件?
例如,我想将所有这些文件包含在名为filename.foo
的打包文件中压缩:
答案 0 :(得分:1)
最后,我更改了文件扩展名,并为系统添加了新的MIME-TYPE。通过这种方式,Nautilus(Ubuntu)和Windows资源管理器可识别具有新类型的文件。
当我使用命令file --mime-type
时,我仍然检测到zip mime-type。但这并不错,因为我可以使用这种检测来避免我的应用程序出错。
使用以下内容在/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
第一步是将图标重命名为application-todo,它必须是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
让你的nautilus刷新,你将拥有一个带有图标的新mime类型
答案 1 :(得分:-2)
大多数更高级别的应用程序都使用文件扩展名来确定approprite mime类型。
OS X,Linux和UNIX系统可以使用&#39;文件&#39;使用预编译的头数据库的命令和存在mime类型的唯一标识符的偏移量;见/usr/share/misc/magic.mgc
虽然我只能想到将创建的存档修改为不同的mime类型的一个原因,这无疑是邪恶的,但是可能需要对存档进行十六进制编辑以在正确的偏移处创建/假装相关的签名。
当然,这将要求您的节点模块在提取之前首先剥离这个不必要的标头。