diff --git a/src/Symfony/Component/HttpFoundation/File/MimeType/FileinfoMimeTypeGuesser.php b/src/Symfony/Component/HttpFoundation/File/MimeType/FileinfoMimeTypeGuesser.php index 09a0d7ed19..a6950df2cd 100644 --- a/src/Symfony/Component/HttpFoundation/File/MimeType/FileinfoMimeTypeGuesser.php +++ b/src/Symfony/Component/HttpFoundation/File/MimeType/FileinfoMimeTypeGuesser.php @@ -15,12 +15,26 @@ use Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException; use Symfony\Component\HttpFoundation\File\Exception\AccessDeniedException; /** - * Guesses the mime type using the PECL extension FileInfo + * Guesses the mime type using the PECL extension FileInfo. * * @author Bernhard Schussek */ class FileinfoMimeTypeGuesser implements MimeTypeGuesserInterface { + private $magicFile; + + /** + * Constructor. + * + * @param string $magicFile A magic file to use with the finfo instance + * + * @link http://www.php.net/manual/en/function.finfo-open.php + */ + public function __construct($magicFile = null) + { + $this->magicFile = $magicFile; + } + /** * Returns whether this guesser is supported on the current OS/PHP setup * @@ -48,7 +62,7 @@ class FileinfoMimeTypeGuesser implements MimeTypeGuesserInterface return null; } - if (!$finfo = new \finfo(FILEINFO_MIME_TYPE)) { + if (!$finfo = new \finfo(FILEINFO_MIME_TYPE, $this->magicFile)) { return null; } diff --git a/src/Symfony/Component/HttpFoundation/File/MimeType/MimeTypeGuesser.php b/src/Symfony/Component/HttpFoundation/File/MimeType/MimeTypeGuesser.php index 88720c00b5..f6bf2cd39d 100644 --- a/src/Symfony/Component/HttpFoundation/File/MimeType/MimeTypeGuesser.php +++ b/src/Symfony/Component/HttpFoundation/File/MimeType/MimeTypeGuesser.php @@ -23,15 +23,17 @@ use Symfony\Component\HttpFoundation\File\Exception\AccessDeniedException; * You can register custom guessers by calling the register() method on the * singleton instance. Custom guessers are always called before any default ones. * + * $guesser = MimeTypeGuesser::getInstance(); + * $guesser->register(new MyCustomMimeTypeGuesser()); + * * If you want to change the order of the default guessers, just re-register your - * preferred one as a custom one. + * preferred one as a custom one. The last registered guesser is preferred over + * previously registered ones. * - * - * $guesser = MimeTypeGuesser::getInstance(); - * $guesser->register(new MyCustomMimeTypeGuesser()); - * + * Re-registering a built-in guesser also allows you to configure it: * - * The last registered guesser is preferred over previously registered ones. + * $guesser = MimeTypeGuesser::getInstance(); + * $guesser->register(new FileinfoMimeTypeGuesser('/path/to/magic/file')); * * @author Bernhard Schussek */