Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

thephpleague/mime-type-detection

Repository files navigation

League Mime Type Detection

Author Source Code Latest Version Software License Build Status Coverage Status Quality Score Total Downloads php 7.2+

This package supplies a generic mime-type detection interface with a finfo based implementation.

Usage

composer require league/mime-type-detection

Consumer interface

Your code is advised to couple to the following interfaces:

  • League\MimetypeDetection\MimeTypeDetector
    This contract is used to detect mimetypes based on file names and file contents.
  • League\MimetypeDetection\ExtensionLookup
    This contract is used to lookup one or all mimetypes for a given file extension. Added in 1.13.0.

Detectors

Finfo with extension fallback:

$detector = new League\MimeTypeDetection\FinfoMimeTypeDetector();

// Detect by contents, fall back to detection by extension.
$mimeType = $detector->detectMimeType('some/path.php', 'string contents');

// Detect by contents only, no extension fallback.
$mimeType = $detector->detectMimeTypeFromBuffer('string contents');

// Detect by actual file, no extension fallback.
$mimeType = $detector->detectMimeTypeFromFile('existing/path.php');

// Only detect by extension
$mimeType = $detector->detectMimeTypeFromPath('any/path.php');

// Constructor options
$detector = new League\MimeTypeDetection\FinfoMimeTypeDetector(
  $pathToMimeDatabase, // Custom mime database location, default: ''
  $customExtensionMap, // Custom extension fallback mapp, default: null
  $bufferSampleSize // Buffer size limit, used to take a sample (substr) from the input buffer to reduce memory consumption.
);

Extension only:

$detector = new League\MimeTypeDetection\ExtensionMimeTypeDetector();

// Only detect by extension, ignores the file contents
$mimeType = $detector->detectMimeType('some/path.php', 'string contents');

// Always returns null
$mimeType = $detector->detectMimeTypeFromBuffer('string contents');

// Only detect by extension
$mimeType = $detector->detectMimeTypeFromFile('existing/path.php');

// Only detect by extension
$mimeType = $detector->detectMimeTypeFromPath('any/path.php');

Extension lookup by mime-type

This feature was added in version 1.13.0

The various implementations can look up the extensions that can be used for a given mime-type.

// string | null
$extension = $detector->lookupExtension($mime$type);

// array<string>
$allExtensions = $detector->lookupAllExtensions($mimeType);

Extension mime-type lookup

As a fallback for finfo based lookup, an extension map is used to determine the mime-type. There is an advised implementation shipped, which is generated from information collected by the npm package mime-db.

Provided extension maps

Generated:

$map = new League\MimeTypeDetection\GeneratedExtensionToMimeTypeMap();

// string mime-type or NULL
$mimeType = $map->lookupMimeType('png');

Overriding decorator

$innerMap = new League\MimeTypeDetection\GeneratedExtensionToMimeTypeMap();
$map = new League\MimeTypeDetection\OverridingExtensionToMimeTypeMap($innerMap, ['png' => 'custom/mimetype']);

// string "custom/mimetype"
$mimeType = $map->lookupMimeType('png');

Empty:

$map = new League\MimeTypeDetection\EmptyExtensionToMimeTypeMap();

// Always returns NULL
$mimeType = $map->lookupMimeType('png');

About

League Mime Type Detection

Resources

License

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published

Contributors 15

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.