Type
The term Internet media type refers to the type of a resource. In short, it defines its structure.
Why Mime ?
The Internet media type is also known as MIME (Multipurpose Internet Mail Extensions) because the media type definition started with the email mime. but ultimately, the media type is the first part of a mime.
For example, in this email content type: 1):
Content-Type: text/plain; charset=us-ascii
the mime or media type is: text/plain (Note that charset is an extra parameter that defines the character set)
Syntax
A media type has the following syntax:
mainType/subType
where mainType is one of the five discrete top-level media types:
- text for textual information where the subtype:
- plain designs plain text
- enriched designs a revision of the richtext subtext (defined in the RFC 1896)
- image for image data where the subtypes define the formats (Example: jpeg, gif)
- audio for audio data. “basic” behind the default subtype.
- video for video data. The default and initial subtype is mpeg
- application - for other kind of data that are readable by an application (by default binary data with the subtype octet-stream where the structure is not standardized )
The specific syntax rule is: A string is a valid MIME type with no parameters if it matches the media-type rule defined in section 3.1.1.1 “Media Types” of RFC 7231, but does not contain any ; U+003B characters. In other words, if it consists only of a type and subtype, with no MIME Type parameters.
Plugin
A user agent must not consider the types text/plain and application/octet-stream as having a registered plugin.
List
Registry
The registry is the full published list of media type. It's available at: registry
Example:
audio/mpeg
image/gif
image/jpeg
text/css
text/html
text/javascript
video/mpeg
video/quicktime
Html
- text/html: HTML document
XML
The term XML MIME type is used to refer to the MIME types:
- text/xml,
- application/xml,
- and any MIME type whose subtype ends with the four characters “+xml”.
x-www-form-urlencoded
Write once, read many
See What are the Read-optimized File Formats (write once, read many)?
Detection
You can detect it:
- by reading the file extension (ie txt, csv, …)
- by parsing the content trying to detect the head value such as a shebang
- via its magic number
Library
Java: probeContentType