From 61c059737ea151743104b53b5aec781117335db9 Mon Sep 17 00:00:00 2001 From: Karel Wintersky Date: Wed, 27 Nov 2024 13:28:04 +0300 Subject: [PATCH] 0.14.3 - fix detect file extension - unified upload method --- src/Media.php | 42 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/src/Media.php b/src/Media.php index 0adb4fd..558a970 100644 --- a/src/Media.php +++ b/src/Media.php @@ -47,6 +47,45 @@ public static function init(array $options = [], array $content_dirs = [], Logge self::$logger = is_null($logger) ? new NullLogger() : $logger; } + /** + * Универсальная точка входа - upload + * Тип определяется внутри + * + * @throws Exception + */ + public function upload($fn_source, $watermark_corner, LoggerInterface $logger = null):Result + { + $logger = $logger ?? self::$logger ?? new NullLogger(); + + $f_info = finfo_open( FILEINFO_MIME_TYPE ); + $f_info_mimetype = finfo_file( $f_info, $fn_source); + $allow = false; + + foreach (AllowedMimeTypes::$allowed_mime_types as $mimetype) { + if (stripos( $f_info_mimetype, $mimetype ) === 0) { + $allow = true; + break; + } + } + + if (!$allow) { + return new Result(false, "[UPLOAD] Загружен файл с неразрешенным MIME-типом `{$f_info_mimetype}`" ); + } + + if (stripos($f_info_mimetype, 'image/') !== false) { + $result = Media::uploadImage($fn_source, $watermark_corner, $logger); + } elseif (stripos( $f_info_mimetype, 'audio/' ) !== false) { + $result = Media::uploadAudio( $fn_source, $logger ); + } elseif (stripos( $f_info_mimetype, 'video/' ) !== false) { + $result = Media::uploadVideo( $fn_source, $logger ); + } else { + $result = Media::uploadAnyFile( $fn_source, $logger ); + } + + return $result; + + } + /** * upload & create thumbnails for Embedded Photo * @@ -73,7 +112,8 @@ public static function uploadImage($fn_source, $watermark_corner, LoggerInterfac $path = self::getAbsoluteResourcePath('photos', 'now'); self::validatePath($path); $radix = self::getRandomFilename(20); - $source_extension = MimeTypes::fromExtension( MimeTypes::fromFilename($fn_source) ); + // $source_extension = MimeTypes::fromExtension( MimeTypes::fromFilename($fn_source) ); + $source_extension = MediaHelpers::detectFileExtension($fn_source); $resource_filename = "{$radix}.{$source_extension}";