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

时间:2017-05-18 12:36:21

标签: node.js ubuntu electron mime-types file-type

我想知道我是否可以在Node上更改文件的mime类型。我检查过许多mime类型的模块,但所有这些模块只是从文件和系统中获取信息。

我想要实现的是将一些文件压缩到一个文件中,然后更改mime类型。通过这种方式,我可以检查文件类型是否适合我的应用程序。

我知道操作系统之间存在差异:

  • 窗。我更改了扩展程序并完成了
  • Ubuntu的。我必须处理哑剧类型。这就是我想要改变的内容
  • 的Mac。他们有一个类似于Ubuntu的系统。

如何在Ubuntu或Mac上实现这一目标?

假设我可以这样做而且我刚刚更改了Ubuntu上的zip文件的mime类型,它是否仍然会被系统检测为zip文件?

如果所有这一切都不可能。如何创建使用不同文件构建的自己的文件?

例如,我想将所有这些文件包含在名为filename.foo的打包文件中压缩:

  • 包含元数据的XML文件
  • 文本文件
  • CSV文件
  • 图片

2 个答案:

答案 0 :(得分:1)

最后,我更改了文件扩展名,并为系统添加了新的MIME-TYPE。通过这种方式,Nautilus(Ubuntu)和Windows资源管理器可识别具有新类型的文件。

当我使用命令file --mime-type时,我仍然检测到zip mime-type。但这并不错,因为我可以使用这种检测来避免我的应用程序出错。

为Nautilus

创建自己的MIME-TYPE
  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
    
  3. 将图标分配给新分机

    第一步是将图标重命名为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类型的一个原因,这无疑是邪恶的,但是可能需要对存档进行十六进制编辑以在正确的偏移处创建/假装相关的签名。

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