代码之家  ›  专栏  ›  技术社区  ›  rmeador

在windows上查找文件的MIME类型

  •  12
  • rmeador  · 技术社区  · 16 年前

    this NET相关的问题,但这并没有给我太多的希望(因为既没有一个好的解决方案,也没有一个C++解决方案在那里被提及)。

    我需要它,以便我可以提供动态文件使用适当的内容类型从我的应用程序。我的计划是首先在我的应用程序中查询一个MIME类型列表,然后返回到系统的MIME类型列表(不管它如何工作;显然它是存在的,因为它是你如何将文件与程序联系起来的)。在某些情况下,我只需要使用文件扩展名,但在其他情况下,我可能需要检查实际的磁盘上文件。由于这些不会是用户上传的文件,我相信我可以信任的扩展,我更喜欢一个扩展只查找解决方案,因为它似乎更简单,更快。谢谢!

    3 回复  |  直到 9 年前
        1
  •  15
  •   Richie Bendall    5 年前

    HKEY_CLASSES_ROOT\\.<ext>\Content Type (其中“ext”是文件扩展名)通常保存MIME类型。

        2
  •  1
  •   Roger Cook    7 年前

    在Windows 10中,不同的MIME类型存储在注册表中:

    HKEY_CLASSES_ROOT\MIME\Database\Content Type
    

    每个内容类型都有一个键(例如。G text/plain )在那把钥匙下面。

        3
  •  0
  •   Peter Tseng    12 年前

    粘贴自 http://www.snoyman.com/blog/2012/03/ie-mimetype-png.html

    #include <urlmon.h>
    #include <stdio.h>
    
    int main(int argc, char* argv[])
    {
        char buff[256];
        LPWSTR out;
    
        FILE *in = fopen("title.png", "rb");
    
        fread(buff, 1, 256, in);
    
        FindMimeFromData(NULL, NULL, buff, 256, NULL, FMFD_DEFAULT, &out, 0);
    
        printf("%ls\n", out);
    
        return 0;
    }