Ответ 1
HKCR\\.<ext>\Content Type
(где "ext" - расширение файла) обычно будет содержать тип MIME.
Есть ли способ получить файл MIME-типа, используя какой-либо системный вызов в Windows? Я пишу расширение IIS в С++, поэтому он должен быть вызван из С++, и у меня есть доступ к IIS, если есть какая-то функциональность. Очевидно, что сам IIS должен быть в состоянии сделать это, но мой поисковик не смог узнать, как это сделать. Я нашел этот.net, связанный с этим вопросом здесь, но это не дает мне большой надежды (так как здесь не упоминается ни хорошее решение, ни решение С++).
Мне это нужно, поэтому я могу обслуживать динамические файлы, используя соответствующий тип контента из своего приложения. Мой план состоит в том, чтобы сначала ознакомиться со списком типов MIME в моем приложении, а затем вернуться к системному типу MIME-типа (однако это работает, очевидно, оно существует, поскольку оно связано с тем, как вы связываете файлы с программами). У меня есть только расширение файла для работы в некоторых случаях, но в других случаях у меня может быть фактический файл на диске для проверки. Поскольку это не будут загруженные пользователем файлы, я считаю, что могу доверять расширению, и я бы предпочел решение для поиска только с расширением, поскольку оно кажется более простым и быстрым. Спасибо!
HKCR\\.<ext>\Content Type
(где "ext" - расширение файла) обычно будет содержать тип MIME.
Вставка из 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;
}