【问题标题】:How can I create my own file type on Node?如何在 Node 上创建自己的文件类型?
【发布时间】:2017-05-18 12:36:21
【问题描述】:

我想知道是否可以在 Node.js 上更改文件的 mime 类型。我检查了许多mime类型的模块,但它们都只是为了从文件和系统中获取信息。

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

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

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

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

假设我可以做到,并且我刚刚在 Ubuntu 上更改了 zip 文件的 mime 类型,系统是否仍会将该文件检测为 zip 文件?

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

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

  • 带有元数据的 XML 文件
  • 一个文本文件
  • CSV 文件
  • 一张图片

【问题讨论】:

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


    【解决方案1】:

    最后我更改了文件扩展名并向系统添加了一个新的 MIME-TYPE。这样,Nautilus (Ubuntu) 和 Windows 资源管理器就可以识别出具有新类型的文件。

    当我使用命令 file --mime-type 时,我仍然检测到 zip mime 类型。但这还不错,因为我可以使用此检测来避免我的应用出现错误。

    为 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
      

    为新扩展分配一个图标

    第一步是将图标重命名为 application-todo 并且它必须在 svg 扩展中。

    如果您使用的是 gnome,您已将图标移动到 /usr/share/icons/gnome/scalable,然后使用更新缓存

    $ sudo gtk-update-icon-cache /usr/share/icons/gnome -f
    

    如果您使用统一移动它到/usr/share/icons/Humanity/mimes/ 然后更新缓存

    $ sudo gtk-update-icon-cache /usr/share/icons/Humanity -f
    

    刷新一下你的鹦鹉螺,你将拥有一个带有图标的新 mime 类型

    【讨论】:

      【解决方案2】:

      大多数高级应用程序使用文件扩展名来确定适当的 mime 类型。

      OS X、Linux 和 UNIX 系统可以使用“文件”命令,该命令使用预编译的标题数据库和 MIME 类型的唯一标识符存在的偏移量;见 /usr/share/misc/magic.mgc

      虽然我只能想到将创建的存档修改为不同的 mime 类型的一个原因,这无疑是邪恶的,但可能需要十六进制编辑存档以在正确的偏移量处创建/假装相关签名。

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

      【讨论】:

      • 那么您将如何使用其文件类型创建自己的文件?我想将一些文件打包成一个,以便在我的应用程序上打开它们
      • 我在我的问题中添加了一个示例
      • 奇怪,我的回答表明这已经完成了。哪一部分令人困惑?
      • 所以我不得不去掉文件头,怎么做?我可以使用命令file 添加新标头吗?还有另一种方法可以从头开始创建我自己的文件类型吗?而不是更改 mime 类型
      • 您的原始帖子表明您希望将存档的当前 mime 类型、压缩或其他方式更改为另一种 mime 类型。我的假设是您希望使用现有的 mime 类型,这需要添加特定的标头值才能存在于文件中的特定地址。现在您似乎想要完全创建一个新的 mime 类型。如果是后者,那么您可以轻松地使用上述手册来执行此操作。
      猜你喜欢
      • 1970-01-01
      • 2019-12-14
      • 2021-12-27
      • 1970-01-01
      • 2014-07-13
      • 1970-01-01
      • 2019-10-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多