karwana / mime
Installs: 25 859
Dependents: 1
Suggesters: 0
Security: 0
Stars: 9
Watchers: 3
Forks: 2
Open Issues: 0
Requires
- php: >=5.3.0
Requires (Dev)
- phing/phing: ~2.8.1
- phpunit/phpunit: ~4.1.3
This package is not auto-updated.
Last update: 2024-12-17 03:30:22 UTC
README
MIME type and file extension utilities for PHP. Powered by finfo
and the Apache-provided public domain mime.types map of media types to unique file extension(s).
Examples
To get started, use the namespace wherever you want to use this library.
use Karwana\Mime;
For uploaded files
First we get the canonical extension and use it for the permanent file name. The original file name is used before falling back to running finfo
if the file has no extension or if the extension is unlisted.
$extension = Mime::guessExtension($_FILES['my_file']['tmp_name'], $_FILES['my_file']['name']); move_uploaded_file($_FILES['my_file']['tmp_name'], 'uploads/' . Uuid::v4() . '.' . $extension);
Later on, if we want to serve the file to the client, we can return the appropriate MIME type.
header('Content-Type: ' . Mime::guessType($my_file)); header('Content-Length: ' . filesize($my_file)); readfile($my_file);
Add an extension to an extensionless file
You might want to do this as part of a batch job.
$my_file = 'path/to/extensionless_file'; rename($my_file, $my_file . '.' . Mime::guessExtension($my_file));
Development
Run tests using $ vendor/bin/phing test
.
Use the provided script to update the MIME type list to the latest version from Apache's tracker.
curl https://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types | \ bin/mime_types2json > Mime/Resources/mime_types.json
License
See LICENSE
.