Подтвердить что ты не робот

Поиск типа MIME для файла в окнах

Есть ли способ получить файл MIME-типа, используя какой-либо системный вызов в Windows? Я пишу расширение IIS в С++, поэтому он должен быть вызван из С++, и у меня есть доступ к IIS, если есть какая-то функциональность. Очевидно, что сам IIS должен быть в состоянии сделать это, но мой поисковик не смог узнать, как это сделать. Я нашел этот.net, связанный с этим вопросом здесь, но это не дает мне большой надежды (так как здесь не упоминается ни хорошее решение, ни решение С++).

Мне это нужно, поэтому я могу обслуживать динамические файлы, используя соответствующий тип контента из своего приложения. Мой план состоит в том, чтобы сначала ознакомиться со списком типов MIME в моем приложении, а затем вернуться к системному типу MIME-типа (однако это работает, очевидно, оно существует, поскольку оно связано с тем, как вы связываете файлы с программами). У меня есть только расширение файла для работы в некоторых случаях, но в других случаях у меня может быть фактический файл на диске для проверки. Поскольку это не будут загруженные пользователем файлы, я считаю, что могу доверять расширению, и я бы предпочел решение для поиска только с расширением, поскольку оно кажется более простым и быстрым. Спасибо!

4b9b3361

Ответ 1

HKCR\\.<ext>\Content Type (где "ext" - расширение файла) обычно будет содержать тип MIME.

Ответ 2

Вставка из 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;
}