From 5d7fed7de83fa432f679031d00c46ca2a150c2d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=8Carodej?= Date: Tue, 10 May 2022 07:53:41 +0200 Subject: [PATCH] UnableToRetrieveMetadata error --- .env.testing | 2 +- .../Files/Actions/ProcessFileAction.php | 36 +++++++++++++------ 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/.env.testing b/.env.testing index 08f2f4f8..35ffeb3c 100644 --- a/.env.testing +++ b/.env.testing @@ -1,6 +1,6 @@ APP_NAME=Laravel APP_ENV=local -APP_KEY=base64:V2AWruweyafrrc688xMmrsxOwwRcHeLQk3WCOTQESns= +APP_KEY=base64:yZKAPw49CfEkTqkD1YU25gy+RJOnns8EJ/1CaiPbDps= APP_DEBUG=true APP_URL=http://localhost APP_DEMO=false diff --git a/src/Domain/Files/Actions/ProcessFileAction.php b/src/Domain/Files/Actions/ProcessFileAction.php index 50d39ad1..5ea4aea5 100644 --- a/src/Domain/Files/Actions/ProcessFileAction.php +++ b/src/Domain/Files/Actions/ProcessFileAction.php @@ -6,6 +6,7 @@ use Domain\Files\Models\File; use Illuminate\Support\Facades\Storage; use Domain\Files\Requests\UploadRequest; use Domain\Traffic\Actions\RecordUploadAction; +use League\Flysystem\UnableToRetrieveMetadata; class ProcessFileAction { @@ -26,18 +27,28 @@ class ProcessFileAction UploadRequest $request, User $user, string $name, - ) { + ): File { // Get local disk instance $localDisk = Storage::disk('local'); + + // Get file path $filePath = "files/$user->id/$name"; - // Get file data + // Get file size $size = $localDisk->size($filePath); - $mimetype = $localDisk->mimeType($filePath); - // Get upload limit + // Get upload limit size $uploadLimit = get_settings('upload_limit'); + // Get mimetype + try { + $fileType = getFileType( + $localDisk->mimeType($filePath) + ); + } catch (UnableToRetrieveMetadata $e) { + $fileType = 'file'; + } + // File size handling if ($uploadLimit && $size > format_bytes($uploadLimit)) { abort(413); @@ -57,11 +68,13 @@ class ProcessFileAction ); } - // Create multiple image thumbnails - ($this->createImageThumbnail)($name, $user->id); + if ($fileType === 'image') { + // Create multiple image thumbnails + ($this->createImageThumbnail)($name, $user->id); - // Store exif data if exists - $exif = ($this->storeExifData)($filePath); + // Store exif data if exists + $exif = ($this->storeExifData)($filePath); + } // Move file to external storage match (config('filesystems.default')) { @@ -73,7 +86,7 @@ class ProcessFileAction // Create new file $file = File::create([ 'mimetype' => $request->input('extension'), - 'type' => getFileType($mimetype), + 'type' => $fileType, 'parent_id' => ($this->getFileParentId)($request, $user->id), 'name' => $request->input('name'), 'basename' => $name, @@ -83,7 +96,10 @@ class ProcessFileAction ]); // Attach file into the exif data - $exif?->update(['file_id' => $file->id]); + + if ($fileType === 'image') { + $exif?->update(['file_id' => $file->id]); + } // Return new file return $file;