Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Contact Us
Online Help
Domain Status
Man Pages

Virtual Servers

Topology Map

Server Agreement
Year 2038

USA Flag



Man Pages

Manual Reference Pages  -  MOJOX::MIME::TYPES (3)

.ds Aq ’


MojoX::MIME::Types - MIME Types for Mojolicious



   is a Mojo::Base


  use MojoX::MIME::Types;

  # set in Mojolicious as default
  app->types(MojoX::MIME::Types->new);   # ::Lite

  # basic interface translated into pure MIME::Types
  $types->type(foo => text/foo);
  say $types->type(foo);


[Added to MIME::Types 2.07] This module is a drop-in replacement for Mojolicious::Types, but with a more correct handling plus a complete list of types... a huge list of types.

Some methods ignore information they receive: those parameters are accepted for compatibility with the Mojolicious::Types interface, but should not contain useful information.

Read the DETAILS below, about how to connect this module into Mojolicious and the differences you get.



MojoX::MIME::Types-><B>newB>(%options) Create the ’type’ handler for Mojolicious. When you do not specify your own MIME::Type object ($mime_type), it will be instantanted for you. You create one yourself when you would like to pass some parameter to the object constructor.

 -Option    --Default
  mime_types  <created internally>
  types       undef

mime_types => MIME::Types-object Pass your own prepared MIME::Types object, when you need some instantiation parameters different from the defaults.
types => HASH Ignored.



  # when you need to pass options to MIME::Types->new
  my $mt    = MIME::Types->new(%opts);
  my $types = MojoX::MIME::Types->new(mime_types => $mt);


$obj-><B>mimeTypesB>() Returns the internal mime types object.
$obj-><B>typesB>( [\%table] ) In Mojolicious::Types, this attribute exposes the internal administration of types, offering to change it with using a clean abstract interface. That interface mistake bites now we have more complex internals.

<B>Avoid this method!B> The returned HASH is expensive to construct, changes passed via %table are ignored: MIME::Types is very complete!


$obj-><B>detectB>( $accept, [$prio] ) Returns a list of filename extensions. The $accept header in HTTP can contain multiple types, with a priority indication (’q’ attributes). The returned list contains a list with extensions, the extensions related to the highest priority type first. The $prio-flag is ignored. See MIME::Types::httpAccept().

This detect() function is not the correct approach for the Accept header: the Accept may contain wildcards (’*’) in types for globbing, which does not produce extensions. Better use MIME::Types::httpAcceptBest() or MIME::Types::httpAcceptSelect().


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

$obj-><B>typeB>( $ext, [$type|\@types] ) Returns the first type name for an extension $ext, unless you specify type names.

When a single $type or an ARRAY of @types are specified, the $self object is returned. Nothing is done with the provided info.



The Mojolicious::Types module has only very little knowledge about what is really needed to treat types correctly, and only contains a tiny list of extensions. MIME::Types tries to follow the standards very closely and contains all types found in various lists on internet.

    How to use with Mojolicious

Start your Mojo application like this:

  package MyApp;
  use Mojo::Base Mojolicious;

  sub startup {
     my $self = shift;

If you have special options for MIME::Types::new(), then create your own MIME::Types object first:

  my $mt    = MIME::Types->new(%opts);
  my $types = MojoX::MIME::Types->new(mime_types => $mt);

In any case, you can reach the smart MIME::Types object later as

  my $mt    = $app->types->mimeTypes;
  my $mime  = $mt->mimeTypeOf($filename);

    How to use with Mojolicious::Lite

The use in Mojolicious::Lite applications is only slightly different from above:

  my $types = app->types;

    Differences with Mojolicious::Types

There are a few major difference with Mojolicious::Types:
o the tables maintained by MIME::Types are complete. So: there shouldn’t be a need to add your own types, not via types(), not via type(). All attempts to add types are ignored; better remove them from your code.
o This plugin understands the experimental flag ’x-’ in types and handles casing issues.
o Updates to the internal hash via types() are simply ignored, because it is expensive to implement (and won’t add something new).
o The detect() is implemented in a compatible way, but does not understand wildcards (’*’). You should use MIME::Types::httpAcceptBest() or MIME::Types::httpAcceptSelect() to replace this broken function.


This module is part of MIME-Types distribution version 2.13, built on March 07, 2016. Website:


Copyrights 1999,2001-2016 by [Mark Overmeer]. For other contributors see ChangeLog.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See

Search for    or go to Top of page |  Section 3 |  Main Index

perl v5.20.3 MOJOX::MIME::TYPES (3) 2016-03-07

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.