You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
107 lines
3.4 KiB
107 lines
3.4 KiB
2 months ago
|
Mimey
|
||
|
=====
|
||
|
|
||
|
PHP package for converting file extensions to MIME types and vice versa.
|
||
|
|
||
|
[![Build Status](https://travis-ci.org/ralouphie/mimey.svg?branch=master)](https://travis-ci.org/ralouphie/mimey)
|
||
|
[![Coverage Status](https://coveralls.io/repos/ralouphie/mimey/badge.svg?branch=master&service=github)](https://coveralls.io/github/ralouphie/mimey?branch=master)
|
||
|
[![Code Climate](https://codeclimate.com/github/ralouphie/mimey/badges/gpa.svg)](https://codeclimate.com/github/ralouphie/mimey)
|
||
|
[![Latest Stable Version](https://img.shields.io/packagist/v/ralouphie/mimey.svg)](https://packagist.org/packages/ralouphie/mimey)
|
||
|
[![Downloads per Month](https://img.shields.io/packagist/dm/ralouphie/mimey.svg)](https://packagist.org/packages/ralouphie/mimey)
|
||
|
[![License](https://img.shields.io/packagist/l/ralouphie/mimey.svg)](https://packagist.org/packages/ralouphie/mimey)
|
||
|
|
||
|
This package uses [httpd][]'s [mime.types][] to generate a mapping of file extension to MIME type and the other way around.
|
||
|
|
||
|
The `mime.types` file is parsed by `bin/generate.php` and converted into an optimized PHP array in `mime.types.php`
|
||
|
which is then wrapped by helper class `\Mimey\MimeTypes`.
|
||
|
|
||
|
[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
|
||
|
|
||
|
## Usage
|
||
|
|
||
|
```php
|
||
|
$mimes = new \Mimey\MimeTypes;
|
||
|
|
||
|
// Convert extension to MIME type:
|
||
|
$mimes->getMimeType('json'); // application/json
|
||
|
|
||
|
// Convert MIME type to extension:
|
||
|
$mimes->getExtension('application/json'); // json
|
||
|
```
|
||
|
|
||
|
### Getting All
|
||
|
|
||
|
It's rare, but some extensions have multiple MIME types:
|
||
|
|
||
|
```php
|
||
|
// Get all MIME types for an extension:
|
||
|
$mimes->getAllMimeTypes('wmz'); // array('application/x-ms-wmz', 'application/x-msmetafile')
|
||
|
```
|
||
|
|
||
|
However, there are many MIME types have multiple extensions:
|
||
|
|
||
|
```php
|
||
|
// Get all extensions for a MIME type:
|
||
|
$mimes->getAllExtensions('image/jpeg'); // array('jpeg', 'jpg', 'jpe')
|
||
|
```
|
||
|
|
||
|
### Custom Conversions
|
||
|
|
||
|
You can add custom conversions by changing the mapping that is given to `MimeTypes`.
|
||
|
|
||
|
There is a `MimeMappingBuilder` that can help with this:
|
||
|
|
||
|
```php
|
||
|
// Create a builder using the built-in conversions as the basis.
|
||
|
$builder = \Mimey\MimeMappingBuilder::create();
|
||
|
|
||
|
// Add a conversion. This conversion will take precedence over existing ones.
|
||
|
$builder->add('custom/mime-type', 'myextension');
|
||
|
|
||
|
$mimes = new \Mimey\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:
|
||
|
|
||
|
```php
|
||
|
$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');
|
||
|
...
|
||
|
```
|
||
|
|
||
|
#### Optimized Custom Conversion Loading
|
||
|
|
||
|
You can optimize the loading of custom conversions by saving all conversions to a compiled PHP file as part of a build step.
|
||
|
|
||
|
```php
|
||
|
// Add a bunch of custom conversions.
|
||
|
$builder->add(...);
|
||
|
$builder->add(...);
|
||
|
$builder->add(...);
|
||
|
...
|
||
|
// Save the conversions to a cached file.
|
||
|
$builder->save($cache_file_path);
|
||
|
```
|
||
|
|
||
|
The file can then be loaded to avoid overhead of repeated `$builder->add(...)` calls:
|
||
|
|
||
|
```php
|
||
|
// Load the conversions from a cached file.
|
||
|
$builder = \Mimey\MimeMappingBuilder::load($cache_file_path);
|
||
|
$mimes = new \Mimey\MimeTypes($builder->getMapping());
|
||
|
```
|
||
|
|
||
|
## Install
|
||
|
|
||
|
Compatible with PHP >= 5.4.
|
||
|
|
||
|
```
|
||
|
composer require ralouphie/mimey
|
||
|
```
|