Grazie per la risposta. Ho letto l'articolo che mi hai indicato.
Spingendomi di poco oltre, ora so che MIME è uno standard che definisce il formato delle informazioni per il loro traferimento (http://telemat.die.unifi.it/book/Int...Sgml/mime1.htm), nato per la posta elettronica al fine di inserire media diversi all'interno di ambienti di posta (che non è detto supportino i media contenuti nella tramissione), ma questo già si sapeva per sentito dire. Con la RFC 4289 e 4288 (anno 2005) sono stati separati MIME e Media Type (ovvero la definizione dei content-type nella specifica MIME), che fino ad allora avevano convissuto in un unico RFC. Quindi ciò di cui parliamo qui sono i media type che indichiamo nelle nostre chiamate
In particolare la RFC 4288 descrive le specifiche cui un media type deve rispondere e il metodo per registrarlo/alterarlo.codice:header("content-type:...");
Un altro link interessante può essere Internet media type in cui oltre ad un elenco di media type abbiamo anche i riferimenti RFC per la registrazione degli stessi ... quando fatta.
Simpatico notare come IE sia un po' ribelle
Il mondo si muove in un modo ma loro non lo accettanoapplication/javascript: JavaScript; Defined in RFC 4329 but not accepted in IE 8 or earlier
Quindi, con nostra buona pace, non potremo sapere cosa uplodiamo tramite $_FILES['nc']['type'] a meno che tale media type non sia registrato e correttamente tresmesso dal browser. In oltre chi ci garantisce che il browser a sua volta non utilizzi la sola estensione del file per comunicare un media type mappato al suo interno? D'altra parte la sola estensione non ci da garanzia su quel che riceviamo.
In più, se memorizziamo i contenuti degli upload all'interno del DB, quando li restituiamo è opprtuno fornire il media type. Molti optano per il generico octet-stream (generico flusso binario) particolarmente valido per far scaricare il documento, ma per elementi da integrare all'interno della pagina, ad esempio immagini, il browser potrebbe aspettarsi qualcosa di più. Non a caso i media type sono stati estratti dal MIME per consetire un uso più generale a tutte le applicazioni che fanno uso di media diversi trasmessi fra utenti. Fortunatamente per le immagini jpeg, gif, tif, png e PDF (anche se non è una immagine) le cose sono sufficientemente definite. Per molti altri la cosa è ancora astratta.
Di sicuro, per chi di noi si mappa i media type, non sono da considerare buoni quelli che dopo lo / presentano prs. o x. o x- (vecchia notazione), perchè definizioni personali non registrare nel primo caso, o sperimentali e non registrate negli altri due. Sono sicuramente più attendibili quelli che, sempre dopo lo /, iniziano con vnd. poichè registrati da venditori/produttori di software. Non a caso i docx, xlsx... hanno come media type vnd.open...... o con altri nomi
I media type che inviamo ai browser sono sempre utilizzati? Lo scopo del content-type è far conoscere al destinatario quale tipo di contenuto può aspettarsi dalla trasmissione al fine di trattarlo in modo appropriato. Per tale motivo credo di sì. A riprova, in assenza di estensione nel nome del file, scaricando dei dati caricati nel DB e trasmettendo i media type, tutti i browser riconoscevano il formato del file. Mi è capitato di svolgere la stessa operazione dietro un sistema che, prima di trasmettere il download accerta la presenza di visur direttamente sul PROXY. In questo caso il media type nella header andava perso, per qualche motivo, ed i browser non riconoscevano più il formato del documento, cosa che tornano a fare specificando una estensione con filename nell'header. Quindi diciamo che in download i browser ci provano ad interpretare il documento con entrambi i sistemi (content-type ed estensione), cosa che alla fine dovremmo fare anche noi in upload, fermo restando la nostra non conoscenza del contenuto poichè tutto questo viene fatto al fine di far conoscere al ricevente cosa aspettarsi sia contenuto nel flusso dei dati, non il suo reale contenuto. Quindi si potrebbe inviare qualunque cosa spacciandola tramite content-type per qualcos'altro.
Questo mi è sembrato di capire!