function DrupalLocalStreamWrapper::getMimeType

Base implementation of getMimeType().

Overrides DrupalStreamWrapperInterface::getMimeType

1 call to DrupalLocalStreamWrapper::getMimeType()
file_get_mimetype in includes/file.inc
Determines an Internet Media Type or MIME type from a filename.

File

includes/stream_wrappers.inc, line 310

Class

DrupalLocalStreamWrapper
Drupal stream wrapper base class for local files.

Code

static function getMimeType($uri, $mapping = NULL) {
    if (!isset($mapping)) {
        // The default file map, defined in file.mimetypes.inc is quite big.
        // We only load it when necessary.
        include_once DRUPAL_ROOT . '/includes/file.mimetypes.inc';
        $mapping = file_mimetype_mapping();
    }
    $extension = '';
    $file_parts = explode('.', drupal_basename($uri));
    // Remove the first part: a full filename should not match an extension.
    array_shift($file_parts);
    // Iterate over the file parts, trying to find a match.
    // For my.awesome.image.jpeg, we try:
    //   - jpeg
    //   - image.jpeg, and
    //   - awesome.image.jpeg
    while ($additional_part = array_pop($file_parts)) {
        $extension = strtolower($additional_part . ($extension ? '.' . $extension : ''));
        if (isset($mapping['extensions'][$extension])) {
            return $mapping['mimetypes'][$mapping['extensions'][$extension]];
        }
    }
    return 'application/octet-stream';
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.