Mi ricorda di tornare indietro nel giorno in cui, ehm, "alcune persone" erano solite condividere file 50MB rar nei primi siti di hosting gratuito di immagini, aggiungendo semplicemente l'estensione .gif al nome file .rar.
Chiaramente se si è di fronte pubblico e ci si aspetta un determinato tipo di file, e si deve essere sicuri che sia quel tipo di file, allora non ci si può semplicemente fidare dell'estensione.
D'altra parte, se la tua app non avrebbe motivo di diffidare dell'estensione caricata e/o del tipo MIME, basta ottenere quelli quando il file viene caricato come le risposte che hai ricevuto da @rossfabircant e @RandolphPotter. crea un tipo che ha il byte [], così come l'estensione o il mimetype originale e passa in giro.
Se è necessario verificare che il file sia effettivamente un tipo previsto come un file .jpeg o .png valido, provare a interpretare il file come tali e vedere se si apre correttamente. (System.Drawing.Imaging.ImageFormat)
Se si sta tentando di classificare il file solo dai contenuti binari e potrebbe essere qualsiasi formato nell'intero mondo, questo è davvero un problema difficile e aperto e non esiste un modo affidabile al 100% per farlo. Potresti invocare TrID contro di esso, e ci sono probabilmente strumenti forensi simili usati dagli investigatori delle forze dell'ordine se puoi trovarli (e permetterteli).
Se non devi farlo nel modo più difficile, non farlo.
'FindMimeData' non rileva nemmeno qualcosa di fondamentale come' audio/mp3', quindi i numeri magici sono l'unica opzione se stai rilevando qualcosa al di fuori di questi 26 tipi. Puoi approfondire perché pensi che sia inaffidabile? – Mrchief