Skip to content

Commit

Permalink
Better check mime type of uploaded file
Browse files Browse the repository at this point in the history
  • Loading branch information
Tomasz Narloch committed Jul 4, 2018
1 parent 899e7c9 commit 4f31a67
Showing 1 changed file with 30 additions and 21 deletions.
51 changes: 30 additions & 21 deletions libraries/src/Helper/MediaHelper.php
Original file line number Diff line number Diff line change
Expand Up @@ -66,26 +66,41 @@ private function getMimeType($file, $isImage = false)

try
{
if ($isImage && function_exists('exif_imagetype'))
// Note: mime_content_type() can return false (e.g. when mime database is empty)
if (function_exists('mime_content_type'))
{
$mime = image_type_to_mime_type(exif_imagetype($file));
}
elseif ($isImage && function_exists('getimagesize'))
{
$imagesize = getimagesize($file);
$mime = isset($imagesize['mime']) ? $imagesize['mime'] : false;
}
elseif (function_exists('mime_content_type'))
{
// We have mime magic.
$mime = mime_content_type($file);
}
elseif (function_exists('finfo_open'))

if (!$mime && function_exists('finfo_open'))
{
// We have fileinfo
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mime = finfo_file($finfo, $file);
finfo_close($finfo);

// Check if fileinfo database was found
if ($finfo)
{
$mime = finfo_file($finfo, $file);
finfo_close($finfo);
}
}

if (!$mime && $isImage)
{
if (function_exists('exif_imagetype'))
{
$type = exif_imagetype($file);

if ($type)
{
$mime = image_type_to_mime_type($type);
}
}

if (!$mime)
{
$imagesize = getimagesize($file);
$mime = isset($imagesize['mime']) ? $imagesize['mime'] : false;
}
}
}
catch (\Exception $e)
Expand All @@ -94,12 +109,6 @@ private function getMimeType($file, $isImage = false)
return false;
}

// If we can't detect the mime try it again
if ($mime === 'application/octet-stream' && $isImage === true)
{
$mime = $this->getMimeType($file, false);
}

// We have a mime here
return $mime;
}
Expand Down

0 comments on commit 4f31a67

Please sign in to comment.