Dopo tanta fatica siamo riusciti a trovare la risposta a questa questione che alcuni lettori del nostro spazio presentano. Se vuoi condividere qualcos'altro non esitare a lasciare il tuo commento.
A tipo di media (noto anche come Multipurpose Internet Mail Extensions o tipo MIME) è uno standard che indica la natura e il formato di un documento, file o assortimento di byte. È definito e standardizzato nel programma IETF RFC 6838.
Il Autorità per i numeri assegnati da Internet (IANA) è responsabile di tutti i tipi di MIME ufficiali, ed è possibile trovare l'elenco più aggiornato e completo presso il loro sito web Tipi di media .
Importante: I browser utilizzano il tipo MIME, non l'estensione del file per determinare come processare un URL, quindi è importante che i server web inviino il tipo MIME corretto nella risposta Content-Type
della risposta. Se questa non è configurata correttamente, è probabile che i browser interpretino male il contenuto dei file e che i siti non funzionino correttamente e che i file scaricati vengano gestiti in modo errato.
Struttura di un tipo MIME
Il tipo MIME più semplice è costituito da un elemento tipo e un sottotipo; queste sono stringhe che, se concatenate con una barra (/
) tra loro, costituiscono un tipo MIME. Non sono ammessi spazi bianchi in un tipo MIME:
type/subtype
Il tipo rappresenta la categoria generale in cui rientra il tipo di dati, ad esempio video
o text
. Il valore è un sottotipo identifica il tipo esatto di dati del tipo specificato che il tipo MIME rappresenta. Ad esempio, per il tipo MIME text
il sottotipo potrebbe essere plain
(testo normale), html
(HTML codice sorgente), o calendar
(per iCalendar/.ics
).
Ogni tipo ha il suo insieme di possibili sottotipi e un tipo MIME ha sempre sia un tipo che un sottotipo, mai solo uno o l'altro.
Un'opzione parametro può essere aggiunto per fornire ulteriori dettagli:
type/subtype;parameter=value
Ad esempio, per qualsiasi tipo MIME il cui tipo principale è text
, l'opzione charset
può essere utilizzato per specificare il set di caratteri utilizzato per i caratteri dei dati. Se non è presente il parametro charset
è specificato, il valore predefinito è ASCII (US-ASCII
) a meno che non venga sovrascritto dall'opzione dell'agente utente dell'interprete. Per specificare un file di testo UTF-8, il tipo MIME text/plain;charset=UTF-8
viene utilizzato.
I tipi MIME non fanno distinzione tra maiuscole e minuscole, ma sono tradizionalmente scritti in minuscolo, ad eccezione dei valori dei parametri, il cui caso può avere o meno un significato specifico.
Tipi
Esistono due classi di tipi: discreto e multiparte. I tipi discreti sono tipi che rappresentano un singolo file o supporto, come un singolo file di testo o musicale, o un singolo video. Un tipo multipart è un tipo che rappresenta un documento composto da più parti, ognuna delle quali può avere un proprio tipo MIME.e; oppure, un tipo multipart può incapsulare più file che vengono inviati insieme in un'unica transazione. Ad esempio, i tipi MIME multipart sono utilizzati quando si allegano più file a un messaggio di posta elettronica.
Tipi discreti
I tipi discreti attualmente registrati presso la IANA sono:
application
Elenco presso la IANA- Qualsiasi tipo di dati binari che non rientrano esplicitamente in uno degli altri tipi; dati che verranno eseguiti o interpretati in qualche modo o dati binari che richiedono un'applicazione o una categoria di applicazioni specifiche per essere utilizzati. I dati binari generici (o i dati binari il cui vero tipo è sconosciuto) sono
application/octet-stream
. Altri esempi comuni sonoapplication/pdf
,application/pkcs8
eapplication/zip
. audio
Elenco presso la IANA- Dati audio o musicali. Gli esempi includono
audio/mpeg
,audio/vorbis
. example
- Riservato all'uso come segnaposto negli esempi che mostrano l'uso dei tipi MIME. Non dovrebbero mai essere usati al di fuori degli elenchi di codice di esempio e della documentazione.
example
può essere usato anche come sottotipoe; per esempio, in un esempio relativo al lavoro con l'audio sul web, il tipo MIMEaudio/example
può essere usato per indicare che il tipo è un segnaposto e deve essere sostituito con uno appropriato quando si usa il codice nel mondo reale. font
Elenco presso la IANA- Dati relativi a font/tipologia. Esempi comuni sono
font/woff
,font/ttf
efont/otf
. image
Elenco presso IANA- Immagine o dati grafici, comprese le immagini fisse bitmap e vettoriali e le versioni animate dei formati di immagini fisse, come le immagini animate. GIF o APNG. Esempi comuni sono
image/jpeg
,image/png
eimage/svg+xml
. model
Elenco presso la IANA- Dati del modello per un oggetto o una scena 3D. Gli esempi includono
model/3mf
emodel/vml
. text
Elenco presso IANA- Dati di solo testo, compresi i contenuti leggibili dall'uomo, il codice sorgente o i dati testuali, come i dati in formato CSV (comma-separated value). Gli esempi includono
text/plain
,text/csv
etext/html
. video
Elenco presso la IANA- Dati o file video, come i filmati MP4 (
video/mp4
).
Per i documenti di testo senza un sottotipo specifico, text/plain
dovrebbe essere utilizzato. Allo stesso modo, per i documenti binari senza un sottotipo specifico o noto, application/octet-stream
dovrebbe essere utilizzato.
Tipi multiparte
Multipartita indicano una categoria di documenti suddivisi in parti, spesso con tipi MIME diversi; possono anche essere usati, soprattutto in scenari di posta elettronica, per rappresentare file multipli e separati che fanno tutti parte della stessa transazione. Rappresentano un documento composito.
Ad eccezione di multipart/form-data
, utilizzato nel documento POST
metodo di Moduli HTML e multipart/byteranges
, usati con 206
Partial Content
per inviare parte di un documento, HTTP non gestisce in modo speciale i documenti multiparte: il messaggio viene trasmesso al browser (che probabilmente mostrerà una finestra "Salva con nome" se non sa come visualizzare il documento).
Esistono due tipi di multipart:
message
Elenco presso la IANA- Un messaggio che incapsula altri messaggi. Può essere utilizzato, ad esempio, per rappresentare un messaggio di posta elettronica che include un messaggio inoltrato come parte dei suoi dati, oppure per consentire l'invio di messaggi molto grandi in pezzi come se fossero messaggi multipli. Gli esempi includono
message/rfc822
(per la citazione di messaggi inoltrati o a cui si è risposto) emessage/partial
che consente di suddividere automaticamente un messaggio di grandi dimensioni in messaggi più piccoli che devono essere riassemblati dal destinatario. multipart
Elenco presso la IANA- Dati costituiti da più componenti che possono avere individualmente tipi MIME diversi. Gli esempi includono
multipart/form-data
(per i dati prodotti utilizzando il metodoFormData
API) emultipart/byteranges
(definito in RFC 7233: 5.4.1 e utilizzato con HTTP's206
"Contenuto parziale", restituita quando i dati recuperati sono solo una parte del contenuto, come nel caso in cui venga fornita con l'opzioneRange
).
Tipi MIME importanti per gli sviluppatori Web
applicazione/flusso di ottetti
È l'impostazione predefinita per i file binari. Significa binario sconosciuto i browser di solito non lo eseguono e non chiedono nemmeno se deve essere eseguito. Lo trattano come se il file Content-Disposition
fosse impostato su attachment
e propongono una finestra di dialogo "Salva con nome".
testo/plain
È l'impostazione predefinita per i file testuali. Anche se in realtà significa "file testuale sconosciuto", i browser pensano di poterlo visualizzare.
Si noti che text/plain
non significa "qualsiasi tipo di dato testuale". Se si aspettano un tipo specifico di dati testuali, è probabile che non lo considerino una corrispondenza. In particolare, se scaricano un file text/plain
da un file che dichiara un file CSS, non lo riconosceranno come un file CSS valido se gli viene presentato un file
text/plain
. Il tipo mime CSS text/css
deve essere utilizzato.
testo/css
File CSS utilizzati per lo stile di una pagina Web deve essere inviati con text/css
. Se un server non riconosce l'opzione .css
per i file CSS, può inviarli con text/plain
o application/octet-stream
tipi MIME. In tal caso, non saranno riconosciuti come CSS dalla maggior parte dei browser e saranno ignorati.
testo/html
Tutti i contenuti HTML dovrebbero essere serviti con questo tipo. Tipi MIME alternativi per XHTML (come ad esempio application/xhtml+xml
) sono per lo più inutili al giorno d'oggi.
Nota: Utilizzare application/xml
o application/xhtml+xml
se si vogliono le rigide regole di parsing di XML, o elementi che non appartengono agli spazi dei nomi HTML/SVG/MathML.
testo/javascript
Secondo le specifiche HTML, i file JavaScript dovrebbero sempre essere serviti usando il tipo MIME text/javascript
. Nessun altro valore è considerato valido e l'uso di uno qualsiasi di questi può causare il mancato caricamento o l'esecuzione degli script.
Per ragioni storiche, il tipo MIME Sniffing Standard (la definizione di come i browser dovrebbero interpretare i tipi di media e capire cosa fare con i contenuti che non ne hanno uno valido) consente di servire JavaScript utilizzando qualsiasi tipo MIME che corrisponde essenzialmente a uno dei seguenti:
application/javascript
application/ecmascript
application/x-ecmascript
application/x-javascript
text/javascript
text/ecmascript
text/javascript1.0
text/javascript1.1
text/javascript1.2
text/javascript1.3
text/javascript1.4
text/javascript1.5
text/jscript
text/livescript
text/x-ecmascript
text/x-javascript
Nota: Anche se un dato tipo agente utente possa supportare uno o tutti questi elementi, si dovrebbe usare solo il formato text/javascript
. È l'unico tipo MIME garantito per il funzionamento attuale e futuro.
Alcuni contenuti trovati potrebbero avere un tipo charset
alla fine dell'elemento text/javascript
per specificare il set di caratteri utilizzato per rappresentare il contenuto del codice. Questo non è valido e nella maggior parte dei casi lo script non viene caricato.
Tipi di immagine
File il cui tipo MIME è image
contengono dati di immagini. Il sottotipo specifica quale formato specifico di file immagine i dati rappresentano. Solo alcuni tipi di immagine sono utilizzati abbastanza comunemente da essere considerati sicuri per l'uso nelle pagine Web:
Abbreviazione | Formato del file | Tipo MIME | Estensione(i) del file | Compatibilità con il browser |
---|---|---|---|---|
APNG | Grafica di rete portatile animata | image/apng |
.apng |
Chrome, Edge, Firefox, Opera, Safari |
BMP | File bitmap | image/bmp |
.bmp |
Chrome, Edge, Firefox, Internet Explorer, Opera, Safari |
GIF | Formato di interscambio grafico | image/gif |
.gif |
Chrome, Edge, Firefox, Internet Explorer, Opera, Safari |
ICO | Icona Microsoft | image/x-icon |
.ico , .cur |
Chrome, Edge, Firefox, Internet Explorer, Opera, Safari |
JPEG | Immagine del Gruppo misto di esperti fotografici | image/jpeg |
.jpg , .jpeg , .jfif , .pjpeg , .pjp |
Chrome, Edge, Firefox, Internet Explorer, Opera, Safari |
PNG | Rete grafica portatile | image/png |
.png |
Chrome, Edge, Firefox, Internet Explorer, Opera, Safari |
SVG | Grafica vettoriale scalabile | image/svg+xml |
.svg |
Chrome, Edge, Firefox, Internet Explorer, Opera, Safari |
TIFF | Formato di file immagine con tag | image/tiff |
.tif , .tiff |
Nessuno integrato; sono necessari componenti aggiuntivi |
WebP | Formato immagine Web | image/webp |
.webp |
Chrome, Edge, Firefox, Opera |
L'abbreviazione di ciascun formato rimanda a una descrizione più approfondita del formato, delle sue funzionalità e delle informazioni dettagliate sulla compatibilità dei browser, comprese le versioni che hanno introdotto il supporto e le caratteristiche speciali specifiche che potrebbero essere state introdotte successivamente.
Tipi di audio e video
Come nel caso delle immagini, l'HTML non impone ai browser web il supporto di specifici tipi di file e codec per i file audio e video. e
quindi è importante considerare il pubblico a cui ci si rivolge e la gamma di browser (e le versioni di tali browser) che potrebbero utilizzare quando si sceglie il tipo di file e i codec da utilizzare per i media.
Il nostro guida ai formati dei contenitori multimediali fornisce un elenco dei tipi di file comunemente supportati dai browser web, comprese le informazioni sui casi d'uso speciali, gli eventuali svantaggi e le informazioni sulla compatibilità, oltre ad altri dettagli.
Il codec audio e codec video Le guide elencano i vari codec che i browser web spesso supportano, fornendo dettagli sulla compatibilità e informazioni tecniche come il numero di canali audio supportati, il tipo di compressione utilizzata, la velocità di trasmissione e così via. Il utilizzati da WebRTC si estende a tutto questo coprendo specificamente i codec supportati dai principali browser web, in modo da poter scegliere i codec che meglio coprono la gamma di browser che si desidera supportare.
Per quanto riguarda i tipi MIME dei file audio o video, essi specificano tipicamente il formato del contenitore (tipo di file). L'opzione codecs può essere aggiunto al tipo MIME per specificare ulteriormente quali codec utilizzare e quali opzioni sono state usate per codificare i media, come il profilo del codec, il livello o altre informazioni simili.
Di seguito sono elencati i tipi MIME più comunemente utilizzati per i contenuti web. Tuttavia, questo non è un elenco completo di tutti i tipi disponibili. Vedere la sezione formati dei contenitori multimediali per questo.
Tipo MIME | Tipo audio o video |
---|---|
audio/wave audio/wav audio/x-wav audio/x-pn-wav |
Un file audio nel formato contenitore WAVE. Il codec audio PCM (WAVE codec "1") è spesso supportato, ma altri codec hanno un supporto limitato (se presente). |
audio/webm |
Un file audio nel formato contenitore WebM. Vorbis e Opus sono i codec ufficialmente supportati dalla specifica WebM. |
video/webm |
Un file video, eventualmente con audio, nel formato contenitore WebM. VP8 e VP9 sono i codec video più comuni; Vorbis e Opus i codec audio più comuni. |
audio/ogg |
Un file audio nel formato contenitore Ogg. Vorbis è il codec audio più comunemente usato in questo tipo di contenitore; tuttavia, anche Opus è ora supportato da Ogg. |
video/ogg |
Un file video, eventualmente con audio, nel formato contenitore Ogg. Theora è il codec video solitamente utilizzato al suo interno; Vorbis è il codec audio abituale, anche se Opus sta diventando sempre più comune. |
application/ogg |
Un file audio o video che utilizza il formato contenitore Ogg. Theora è il codec video solitamente utilizzato; Vorbis è il codec audio abituale. |
multipart/form-data
Il multipart/form-data
può essere utilizzato quando si inviano i valori di un file Modulo HTML dal browser al server.
Essendo un formato di documento multiparte, è costituito da diverse parti, delimitate da un confine (una stringa che inizia con un doppio trattino --
). Ogni parte è un'entità a sé stante con le proprie intestazioni HTTP, Content-Disposition
e Content-Type
per i campi di caricamento dei file.
Content-Type: multipart/form-data; boundary=aBoundaryString (other headers associated with the multipart document as a whole) --aBoundaryString Content-Disposition: form-data; name="myFile"; filename="img.jpg" Content-Type: image/jpeg (data) --aBoundaryString Content-Disposition: form-data; name="myField" (data) --aBoundaryString (more subparts) --aBoundaryString--
Il seguente