function ExtensionMimeTypeGuesser::guessMimeType

Same name in this branch
  1. 10 core/lib/Drupal/Core/ProxyClass/File/MimeType/ExtensionMimeTypeGuesser.php \Drupal\Core\ProxyClass\File\MimeType\ExtensionMimeTypeGuesser::guessMimeType()
Same name and namespace in other branches
  1. 11.x core/lib/Drupal/Core/File/MimeType/ExtensionMimeTypeGuesser.php \Drupal\Core\File\MimeType\ExtensionMimeTypeGuesser::guessMimeType()
  2. 11.x core/lib/Drupal/Core/ProxyClass/File/MimeType/ExtensionMimeTypeGuesser.php \Drupal\Core\ProxyClass\File\MimeType\ExtensionMimeTypeGuesser::guessMimeType()
  3. 9 core/lib/Drupal/Core/File/MimeType/ExtensionMimeTypeGuesser.php \Drupal\Core\File\MimeType\ExtensionMimeTypeGuesser::guessMimeType()
  4. 9 core/lib/Drupal/Core/ProxyClass/File/MimeType/ExtensionMimeTypeGuesser.php \Drupal\Core\ProxyClass\File\MimeType\ExtensionMimeTypeGuesser::guessMimeType()
  5. main core/lib/Drupal/Core/File/MimeType/ExtensionMimeTypeGuesser.php \Drupal\Core\File\MimeType\ExtensionMimeTypeGuesser::guessMimeType()
  6. main core/lib/Drupal/Core/ProxyClass/File/MimeType/ExtensionMimeTypeGuesser.php \Drupal\Core\ProxyClass\File\MimeType\ExtensionMimeTypeGuesser::guessMimeType()

File

core/lib/Drupal/Core/File/MimeType/ExtensionMimeTypeGuesser.php, line 903

Class

ExtensionMimeTypeGuesser
Makes possible to guess the MIME type of a file using its extension.

Namespace

Drupal\Core\File\MimeType

Code

public function guessMimeType($path) : ?string {
  if ($this->mapping === NULL) {
    $mapping = $this->defaultMapping;
    // Allow modules to alter the default mapping.
    $this->moduleHandler
      ->alter('file_mimetype_mapping', $mapping);
    $this->mapping = $mapping;
  }
  $extension = '';
  $file_parts = explode('.', \Drupal::service('file_system')->basename($path));
  // Remove the first part: a full filename should not match an extension,
  // then iterate over the file parts, trying to find a match.
  // For 'my.awesome.image.jpeg', we try: 'awesome.image.jpeg', then
  // 'image.jpeg', then 'jpeg'.
  // We explicitly check for NULL because that indicates that the array is
  // empty.
  while (array_shift($file_parts) !== NULL) {
    $extension = strtolower(implode('.', $file_parts));
    if (isset($this->mapping['extensions'][$extension])) {
      return $this->mapping['mimetypes'][$this->mapping['extensions'][$extension]];
    }
  }
  return NULL;
}

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