파일이나 확장자가 이미지, 오디오, 동영상이며, MIME 타입이 전혀 다른 경우에만 확장자를 고치도록 수정

direct가 아닌 첨부파일 본문 삽입시의 오류 수정
이미지, 오디오, 동영상 MIME 타입을 mime_content_type()의 반환값으로 수정
This commit is contained in:
conory 2019-10-03 23:40:55 +09:00
parent ac9141b4f2
commit 6db830c4c4
9 changed files with 122 additions and 100 deletions

View file

@ -884,17 +884,13 @@ class fileController extends file
$file_info['converted'] = false;
// Correct extension
if($extension_by_type = Rhymix\Framework\MIME::getExtensionByType($file_info['type']))
if($file_info['extension'])
{
$target_types = ['image', 'audio', 'video'];
if(in_array(array_shift(explode('/', $file_info['type'])), $target_types))
$type_by_extension = Rhymix\Framework\MIME::getTypeByExtension($file_info['extension']);
if(!in_array($type_by_extension, [$file_info['type'], 'application/octet-stream']))
{
$file_info['extension'] = $extension_by_type;
}
elseif($file_info['extension'])
{
$type_by_extension = Rhymix\Framework\MIME::getTypeByExtension($file_info['extension']);
if(in_array(array_shift(explode('/', $type_by_extension)), $target_types))
$extension_by_type = Rhymix\Framework\MIME::getExtensionByType($file_info['type']);
if($extension_by_type && preg_match('@^(?:image|audio|video)/@m', $file_info['type'] . PHP_EOL . $type_by_extension))
{
$file_info['extension'] = $extension_by_type;
}
@ -924,7 +920,7 @@ class fileController extends file
}
// video
if(in_array($file_info['extension'], ['mp4', 'webm', 'ogg']))
if(in_array($file_info['extension'], ['mp4', 'webm', 'ogv']))
{
$file_info = $this->adjustUploadedVideo($file_info, $config);
}
@ -1123,7 +1119,7 @@ class fileController extends file
}
// Adjust image rotation
if ($config->image_autorotate && in_array($image_info['type'], ['jpg', 'jpeg']) && function_exists('exif_read_data'))
if ($config->image_autorotate && $image_info['type'] === 'jpg' && function_exists('exif_read_data'))
{
$exif = @exif_read_data($file_info['tmp_name']);
if($exif && isset($exif['Orientation']))