Recommend this page to a friend! |
![]() ![]() |
Info | ![]() |
![]() |
![]() ![]() |
Reputation | Support forum | Blog | Links |
Last Updated | Ratings | Unique User Downloads | Download Rankings | |||||
2024-04-29 (17 hours ago) ![]() | Not enough user ratings | Total: 34 This week: 1 | All time: 10,969 This week: 78![]() |
Version | License | PHP version | Categories | |||
mimey 2.1.0 | MIT/X Consortium ... | 8.2.0 | Files and Folders, PHP 8 |
For anyone using v1.x of Mimey, please see the CHANGELOG and UPGRADING before upgrading to 2.0.0.
PHP package for converting file extensions to MIME types and vice versa.
This package uses [httpd]'s [mime.types] to generate a mapping of file extension to MIME type and the other way around. Click here to view the changelog from their svn: [changelog]
The mime.types
file is parsed by bin/generate.php
and converted into an optimized JSON object in dist/mime.types.min.json
which is then wrapped by helper class MimeTypes
.
Also provides a generated PHP enum with all mime types and methods to get the extension. Can also be used to get the enum value from an extension.
[httpd]: https://httpd.apache.org/docs/current/programs/httpd.html [mime.types]: https://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types [changelog]: https://svn.apache.org/viewvc/httpd/httpd/trunk/docs/conf/mime.types?view=log
$mimes = new MimeTypes;
// Convert extension to MIME type:
$mimes->getMimeType('json'); // application/json
// Convert MIME type to extension:
$mimes->getExtension('application/json'); // json
$json = MimeType::ApplicationJson;
echo $json->getExtension(); // json
echo $json->value; // application/json
$html = MimeType::fromExtension('html');
echo $html->value; // text/html
MimeType::fromExtension('asdf'); // throws an InvalidArgumentException if the extension cannot be found
It's rare, but some extensions have multiple MIME types:
// Get all MIME types for an extension:
$mimes->getAllMimeTypes('wmz'); // array('application/x-ms-wmz', 'application/x-msmetafile')
However, there are many MIME types that have multiple extensions:
// Get all extensions for a MIME type:
$mimes->getAllExtensions('image/jpeg'); // array('jpeg', 'jpg', 'jpe')
You can add custom conversions by changing the mapping that is given to MimeTypes
.
There is a Mapping\Builder
that can help with this:
use Esi\Mimey\Mapping\Builder;
// Create a builder using the built-in conversions as the basis.
$builder = Builder::create();
// Add a conversion. This conversion will take precedence over existing ones.
$builder->add('custom/mime-type', 'myextension');
$mimes = new MimeTypes($builder->getMapping());
$mimes->getMimeType('myextension'); // custom/mime-type
$mimes->getExtension('custom/mime-type'); // myextension
You can add as many conversions as you would like to the builder:
$builder->add('custom/mime-type', 'myextension');
$builder->add('foo/bar', 'foobar');
$builder->add('foo/bar', 'fbar');
$builder->add('baz/qux', 'qux');
$builder->add('cat/qux', 'qux');
...
You can optimize the loading of custom conversions by saving all conversions to a compiled PHP file as part of a build step.
// Add a bunch of custom conversions.
$builder->add(...);
$builder->add(...);
$builder->add(...);
...
// Save the conversions to a cached file.
$builder->save($cacheFilePath);
The file can then be loaded to avoid overhead of repeated $builder->add(...)
calls:
// Load the conversions from a cached file.
$builder = Builder::load($cacheFilePath);
$mimes = new MimeTypes($builder->getMapping());
Compatible with PHP >= 8.2.
composer require esi/mimey
This fork uses the same license as the original repository by @ralouphie (MIT). This repository is a fork of elephox-dev/mimey which itself was a fork of ralouphie/mimey. Thanks to them and all the contributors!
Bugs and feature requests are tracked on GitHub
Issues are the quickest way to report a bug. If you find a bug or documentation error, please check the following first:
Missing a MIME type?
Open an issue or even add it yourself! The process is very easy:
More information for contributions in CONTRIBUTING.
Eric Sizemore - <admin@secondversion.com> - <https://www.secondversion.com>
Mimey is licensed under the MIT License - see the LICENSE.md
file for details.
![]() |
File | Role | Description | ||
---|---|---|---|---|
![]() |
||||
![]() |
||||
![]() |
||||
![]() |
||||
![]() |
||||
![]() |
||||
![]() |
||||
![]() ![]() |
Aux. | Auxiliary script | ||
![]() ![]() |
Data | Auxiliary data | ||
![]() ![]() |
Data | Auxiliary data | ||
![]() ![]() |
Data | Auxiliary data | ||
![]() ![]() |
Data | Auxiliary data | ||
![]() ![]() |
Data | Auxiliary data | ||
![]() ![]() |
Data | Auxiliary data | ||
![]() ![]() |
Data | Auxiliary data | ||
![]() ![]() |
Lic. | License text | ||
![]() ![]() |
Data | Auxiliary data | ||
![]() ![]() |
Data | Auxiliary data | ||
![]() ![]() |
Data | Auxiliary data | ||
![]() ![]() |
Data | Auxiliary data | ||
![]() ![]() |
Doc. | Documentation | ||
![]() ![]() |
Data | Auxiliary data | ||
![]() ![]() |
Data | Auxiliary data | ||
![]() ![]() |
Data | Auxiliary data |
Version Control | Unique User Downloads | Download Rankings | |||||||||||||||
100% |
|
|
Applications that use this package |
If you know an application of this package, send a message to the author to add a link here.