The Perl and Raku Conference 2025: Greenville, South Carolina - June 27-29 Learn more

NAME

Mojolicious::Types - MIME types

SYNOPSIS

my $types = Mojolicious::Types->new;
$types->type(foo => 'text/foo');
say $types->type('foo');

DESCRIPTION

Mojolicious::Types manages MIME types for Mojolicious.

appcache -> text/cache-manifest
atom -> application/atom+xml
bin -> application/octet-stream
css -> text/css
gif -> image/gif
gz -> application/x-gzip
htm -> text/html
html -> text/html;charset=UTF-8
ico -> image/x-icon
jpeg -> image/jpeg
jpg -> image/jpeg
js -> application/javascript
json -> application/json;charset=UTF-8
mp3 -> audio/mpeg
mp4 -> video/mp4
ogg -> audio/ogg
ogv -> video/ogg
pdf -> application/pdf
png -> image/png
rss -> application/rss+xml
svg -> image/svg+xml
ttf -> font/ttf
txt -> text/plain;charset=UTF-8
webm -> video/webm
woff -> font/woff
woff2 -> font/woff2
xml -> application/xml,text/xml
zip -> application/zip

The most common ones are already defined.

ATTRIBUTES

Mojolicious::Types implements the following attributes.

mapping

my $mapping = $types->mapping;
$types = $types->mapping({png => ['image/png']});

MIME type mapping.

METHODS

Mojolicious::Types inherits all methods from Mojo::Base and implements the following new ones.

content_type

$types->content_type(Mojolicious::Controller->new, {ext => 'json'});

Detect MIME type for Mojolicious::Controller object unless a Content-Type response header has already been set, defaults to using application/octet-stream if no better alternative could be found. These options are currently available:

ext
ext => 'json'

File extension to get MIME type for.

file
file => 'foo/bar.png'

File path to get MIME type for.

detect

my $exts = $types->detect('text/html, application/json;q=9');

Detect file extensions from Accept header value.

# List detected extensions prioritized
say for @{$types->detect('application/json, text/xml;q=0.1', 1)};

file_type

my $type = $types->file_type('foo/bar.png');

Get MIME type for file path.

type

my $type = $types->type('png');
$types = $types->type(png => 'image/png');
$types = $types->type(json => ['application/json', 'text/x-json']);

Get or set MIME types for file extension, alternatives are only used for detection.

SEE ALSO

Mojolicious, Mojolicious::Guides, https://mojolicious.org.