gpt4 book ai didi

c++ - MIME 类型到文件扩展名的跨平台映射库,反之亦然

转载 作者:太空狗 更新时间:2023-10-29 21:07:53 26 4
gpt4 key购买 nike

关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。












想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。

1年前关闭。




Improve this question




TL;DR:问题是:

  • 您知道我可以从 C++ 使用的跨平台库来映射 MIME 类型 <-> 文件扩展名吗?


  • 我的应用程序应该处理图像和视频文件。我尽量做到与平台无关,所以我选择使用 Qt4 作为我的主要库。 Phonon 框架(用于处理视频文件)和 QImage(用于处理图像,显然)都可以报告它们支持的文件格式。 Phonon 将返回已安装后端支持的 MIME 类型列表,QImage 用文件扩展名列表表示支持的文件格式。

    应用程序应该从 QString fileName 中找到是否创建 VideoObjectImageObject从中。我的方法是创建一个 map<QString, FuncPtr>返回适当的工厂方法来创建正确的对象。对于字符串,我目前使用文件扩展名,因为从文件名推断文件扩展名非常容易。但是现在我没有一种优雅的方式来注册支持的视频文件类型,因为我只知道它们的 MIME 类型。

    如果我在 map<QString, FuncPtr> 中使用 MIME 类型作为 key , 我将面临如何
  • a) 将文件名映射到 MIME 类型(不知道如何独立和可扩展地执行该平台)
  • b) 将 QImage 提供的文件扩展名映射到 MIME 类型

  • 我知道,根据我到目前为止的研究,很多人建议使用“Apache mime.types 文件”,这将阻止我在客户端更新后支持新的文件格式(WebM、WebP,...)结束。

    我发现的其他建议是在 Linux 上扫描“/etc/mime.types”(我可以这样做)或在 Windows 上“查询注册表”(不知道怎么做)。但这似乎非常仅限于这两个平台,Mac OS X 等呢?

    除了上述问题,我也欢迎任何形式的其他建议。也许我错过了一些明显的脑死亡。

    最佳答案

    就像您已经写过的问题一样,我会从 Apache 或某些 Linux 发行版中获取一个 mimefile,并将其与您的应用程序一起提供。

    就我个人而言,我认为拥有一个“库”来“永久保持最新”是没有意义的。

    MIME 在过去几年中增长巨大,但实际上,您只需要其中所有已定义 MIME 类型的 1% 或更少。人们没有各种各样的文件格式

    如果你想浏览一些,IANA列出了大多数流行的 MIME 类型。

    TL;DR:使用来自 Apache 或某些 Linux 发行版的几乎完整的 mimefile 来交付您的应用程序,并且不必担心从所有目标系统“实时”读取它。

    关于c++ - MIME 类型到文件扩展名的跨平台映射库,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4232269/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com