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