class MimeTypeGuesser

Same name in this branch
  1. main core/lib/Drupal/Core/ProxyClass/File/MimeType/MimeTypeGuesser.php \Drupal\Core\ProxyClass\File\MimeType\MimeTypeGuesser
Same name and namespace in other branches
  1. 11.x core/lib/Drupal/Core/File/MimeType/MimeTypeGuesser.php \Drupal\Core\File\MimeType\MimeTypeGuesser
  2. 11.x core/lib/Drupal/Core/ProxyClass/File/MimeType/MimeTypeGuesser.php \Drupal\Core\ProxyClass\File\MimeType\MimeTypeGuesser
  3. 10 core/lib/Drupal/Core/File/MimeType/MimeTypeGuesser.php \Drupal\Core\File\MimeType\MimeTypeGuesser
  4. 10 core/lib/Drupal/Core/ProxyClass/File/MimeType/MimeTypeGuesser.php \Drupal\Core\ProxyClass\File\MimeType\MimeTypeGuesser
  5. 9 core/lib/Drupal/Core/File/MimeType/MimeTypeGuesser.php \Drupal\Core\File\MimeType\MimeTypeGuesser
  6. 9 core/lib/Drupal/Core/ProxyClass/File/MimeType/MimeTypeGuesser.php \Drupal\Core\ProxyClass\File\MimeType\MimeTypeGuesser
  7. 8.9.x core/lib/Drupal/Core/File/MimeType/MimeTypeGuesser.php \Drupal\Core\File\MimeType\MimeTypeGuesser
  8. 8.9.x core/lib/Drupal/Core/ProxyClass/File/MimeType/MimeTypeGuesser.php \Drupal\Core\ProxyClass\File\MimeType\MimeTypeGuesser

Defines a MIME type guesser that also supports stream wrapper paths.

Hierarchy

  • class \Drupal\Core\File\MimeType\MimeTypeGuesser implements \Symfony\Component\Mime\MimeTypeGuesserInterface

Expanded class hierarchy of MimeTypeGuesser

1 file declares its use of MimeTypeGuesser
DrupalKernel.php in core/lib/Drupal/Core/DrupalKernel.php
1 string reference to 'MimeTypeGuesser'
core.services.yml in core/core.services.yml
core/core.services.yml
1 service uses MimeTypeGuesser
file.mime_type.guesser in core/core.services.yml
Drupal\Core\File\MimeType\MimeTypeGuesser

File

core/lib/Drupal/Core/File/MimeType/MimeTypeGuesser.php, line 13

Namespace

Drupal\Core\File\MimeType
View source
class MimeTypeGuesser implements MimeTypeGuesserInterface {
  
  /**
   * Constructs a MimeTypeGuesser object.
   *
   * @param \Drupal\Core\StreamWrapper\StreamWrapperManagerInterface $streamWrapperManager
   *   The stream wrapper manager.
   * @param \Traversable<\Symfony\Component\Mime\MimeTypeGuesserInterface> $guessers
   *   The MIME type guessers.
   */
  public function __construct(protected StreamWrapperManagerInterface $streamWrapperManager, protected \Traversable $guessers) {
  }
  
  /**
   * {@inheritdoc}
   */
  public function guessMimeType(string $path) : ?string {
    if ($wrapper = $this->streamWrapperManager
      ->getViaUri($path)) {
      // Get the real path from the stream wrapper, if available. Files stored
      // in remote file systems will not have one.
      $real_path = $wrapper->realpath();
      if ($real_path !== FALSE) {
        $path = $real_path;
      }
    }
    foreach ($this->guessers as $guesser) {
      if ($guesser->isGuesserSupported()) {
        $mime_type = $guesser->guessMimeType($path);
        if ($mime_type !== NULL) {
          return $mime_type;
        }
      }
    }
    return 'application/octet-stream';
  }
  
  /**
   * {@inheritdoc}
   */
  public function isGuesserSupported() : bool {
    return TRUE;
  }
  
  /**
   * A helper function to register with Symfony's singleton MIME type guesser.
   *
   * Symfony's default mimetype guessers have dependencies on PHP's fileinfo
   * extension or being able to run the system command file. Drupal's guesser
   * does not have these dependencies.
   *
   * @see \Symfony\Component\Mime\MimeTypes
   */
  public static function registerWithSymfonyGuesser(ContainerInterface $container) : void {
    $guesser = new MimeTypes();
    $guesser->registerGuesser($container->get('file.mime_type.guesser'));
    MimeTypes::setDefault($guesser);
  }

}

Members

Title Sort descending Modifiers Object type Summary
MimeTypeGuesser::guessMimeType public function
MimeTypeGuesser::isGuesserSupported public function
MimeTypeGuesser::registerWithSymfonyGuesser public static function A helper function to register with Symfony&#039;s singleton MIME type guesser.
MimeTypeGuesser::__construct public function Constructs a MimeTypeGuesser object.

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