如何在 Node 上创建自己的文件类型?



我想知道是否可以更改 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 类型

  1. /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>
    
  2. 执行以下命令更新 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 类型的原因,这无疑是邪恶的,但可能需要十六进制编辑存档以在正确的偏移量处创建/假装关联的签名。

当然,这将要求节点模块在提取之前首先剥离这个不必要的标头。

最新更新