Напоминает мне о возвращении в тот день, когда мы, например, «некоторые люди» использовали для обмена 50-мегабайтными файлами rar на ранних сайтах бесплатного размещения изображений, просто добавив расширение .gif к имени файла .rar.
Очевидно, что если вы являетесь публичным лицом, и вы ожидаете определенного типа файла, и вы должны быть уверены, что это тот тип файла, то вы не можете просто доверять расширению.
С другой стороны, если ваше приложение не будет иметь никаких причин не доверять загруженному расширению и типу MIME, то просто получите их, когда файл будет загружен, как ответы, полученные вами от @rossfabircant и @RandolphPotter. создайте тип с байтом [], а также оригинальное расширение или тип mimetype и передайте его.
Если вам нужно убедиться, что файл на самом деле является определенным ожидаемым типом, например, допустимым .jpeg или .png, вы можете попробовать интерпретировать файл как эти типы и посмотреть, успешно ли он открывается. (System.Drawing.Imaging.ImageFormat)
Если вы пытаетесь классифицировать файл только из двоичного содержимого, и это может быть любой формат во всем широком мире, это действительно сложная, открытая проблема и нет 100% надежного способа сделать это. Вы можете вызывать TrID против него, и есть вероятные аналогичные инструменты судебной экспертизы, используемые следователями правоохранительных органов, если вы можете найти (и позволить себе) их.
Если вам не нужно делать это трудным путем, не делайте этого.
'FindMimeData' даже не обнаруживает что-то основное, как' audio/mp3', поэтому магические числа являются единственным вариантом, если вы обнаруживаете что-то вне этих 26 типов. Можете ли вы объяснить, почему вы считаете это ненадежным? – Mrchief