IE utilizza GetClassFileOrMime
e FindMimeFromData
API per rilevare il tipo MIME di dati/file (UrlMon
unità in Delphi).
MIME Type Detection in Internet Explorer
Il CLSID tornato da GetClassFileOrMime
potrebbe essere situato nel Registro di sistema HKEY_CLASSES_ROOT\CLSID\<clsid>\MimeTypes
. (anche FileExtensions
, FriendlyName
).
Il registro contiene anche un database MIME in: HKEY_CLASSES_ROOT\MIME\Database\Content Type
.
Ma poiché l'elenco di known MIME types è relativamente piccolo, è possibile considerarlo come una risorsa XML (o qualsiasi altra cosa) e semplicemente recuperarlo da lì. Ciò supporterà sia Windows che OSX.
Per il funzionamento di caricamento di file si può semplicemente utilizzare sempre application/octet-stream
.
Indy ha classe TIdMimeTable
(IdGlobal
) e utilizza una lista fissa più ispezionando il registro HKEY_CLASSES_ROOT
(vedere FillMimeTable
). Se non viene trovata alcuna corrispondenza, viene utilizzato application/octet-stream
.
Probabilmente si dovrebbe ispezionare il file contenuto sul lato server una volta che il file è stato caricato, e non fare affidamento sulle intestazioni perché lo ContentType
potrebbe essere manomesso sul lato client, e anche non corrispondere con il registro sul server -lato.