Насколько я понимаю, вы хотите получить расширение вашего файла из информации о файле, которая у вас есть под рукой.Я думаю, что у вас есть содержимое двоичного файла, имя файла без расширения и тип MIME (он же тип контента).
Чтобы извлечь расширение из MIME-типа, вы можете использовать какой-то словарь сопоставления в качестве другихупомянул. Ответ Дивьянга Пателя показывает, как вы можете это сделать.
Дополнительной опцией будет эвристическое получение расширения (или типа MIME) из содержимого файла.Как правило, я бы не рекомендовал этот вариант, поскольку он требует значительных ресурсов, но я подумал, что упомяну его для полноты.
TrID - единственный вариант, о котором я лично знаю, чтобы сделать это,Я уверен, что есть другие.Есть CLI, .NET GUI и библиотека Nuget (неофициально, я думаю).
Вот пример использования пакета:
string extension = TrIDEngine.GetExtensionByFileContent(@"C:\path\to\file.???");
Насколько я могу судить, в этой библиотеке нет общедоступного интерфейса, который принимает что-либо, кроме пути файловой системы.Это вызывает сожаление, потому что в некоторых случаях содержимое файла может передаваться откуда-то, кроме файловой системы.
Для вашего случая использования, если вы решите пойти по этому пути, вот как это может работать:
- Записать содержимое файла во временную папку файловой системы (если у вас еще нет пути к файлу, который можно использовать для чтения файла).
- Используйте TrID для получения расширения.
- Отправка ответа клиенту, включая производное расширение файла и его содержимое.
- Удаление (или постановка в очередь на удаление) любых временных файлов, которые были записаны.
Inв любом случае, я бы старался хранить любые производные расширения файлов для последующих запросов.