Allow to check for the mimetype by content only
Signed-off-by: Joas Schilling <coding@schilljs.com>
This commit is contained in:
parent
d32fd77d22
commit
0f3fe7be2c
|
@ -192,12 +192,12 @@ class Detection implements IMimeTypeDetector {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* detect mimetype based on both filename and content
|
* detect mimetype only based on the content of file
|
||||||
*
|
|
||||||
* @param string $path
|
* @param string $path
|
||||||
* @return string
|
* @return string
|
||||||
|
* @since 18.0.0
|
||||||
*/
|
*/
|
||||||
public function detect($path) {
|
public function detectContent(string $path): string {
|
||||||
$this->loadMappings();
|
$this->loadMappings();
|
||||||
|
|
||||||
if (@is_dir($path)) {
|
if (@is_dir($path)) {
|
||||||
|
@ -205,9 +205,7 @@ class Detection implements IMimeTypeDetector {
|
||||||
return "httpd/unix-directory";
|
return "httpd/unix-directory";
|
||||||
}
|
}
|
||||||
|
|
||||||
$mimeType = $this->detectPath($path);
|
if (function_exists('finfo_open')
|
||||||
|
|
||||||
if ($mimeType === 'application/octet-stream' and function_exists('finfo_open')
|
|
||||||
and function_exists('finfo_file') and $finfo = finfo_open(FILEINFO_MIME)
|
and function_exists('finfo_file') and $finfo = finfo_open(FILEINFO_MIME)
|
||||||
) {
|
) {
|
||||||
$info = @strtolower(finfo_file($finfo, $path));
|
$info = @strtolower(finfo_file($finfo, $path));
|
||||||
|
@ -219,7 +217,7 @@ class Detection implements IMimeTypeDetector {
|
||||||
|
|
||||||
}
|
}
|
||||||
$isWrapped = (strpos($path, '://') !== false) and (substr($path, 0, 7) === 'file://');
|
$isWrapped = (strpos($path, '://') !== false) and (substr($path, 0, 7) === 'file://');
|
||||||
if (!$isWrapped and $mimeType === 'application/octet-stream' && function_exists("mime_content_type")) {
|
if (!$isWrapped and function_exists("mime_content_type")) {
|
||||||
// use mime magic extension if available
|
// use mime magic extension if available
|
||||||
$mimeType = mime_content_type($path);
|
$mimeType = mime_content_type($path);
|
||||||
}
|
}
|
||||||
|
@ -242,6 +240,22 @@ class Detection implements IMimeTypeDetector {
|
||||||
return $mimeType;
|
return $mimeType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* detect mimetype based on both filename and content
|
||||||
|
*
|
||||||
|
* @param string $path
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function detect($path) {
|
||||||
|
$mimeType = $this->detectPath($path);
|
||||||
|
|
||||||
|
if ($mimeType !== 'application/octet-stream') {
|
||||||
|
return $mimeType;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->detectContent($path);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* detect mimetype based on the content of a string
|
* detect mimetype based on the content of a string
|
||||||
*
|
*
|
||||||
|
|
|
@ -39,9 +39,17 @@ interface IMimeTypeDetector {
|
||||||
* @param string $path
|
* @param string $path
|
||||||
* @return string
|
* @return string
|
||||||
* @since 8.2.0
|
* @since 8.2.0
|
||||||
**/
|
*/
|
||||||
public function detectPath($path);
|
public function detectPath($path);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* detect mimetype only based on the content of file
|
||||||
|
* @param string $path
|
||||||
|
* @return string
|
||||||
|
* @since 18.0.0
|
||||||
|
*/
|
||||||
|
public function detectContent(string $path): string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* detect mimetype based on both filename and content
|
* detect mimetype based on both filename and content
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue