X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/ffc1aa873ed8912c1400d83191d2b1485e59fca3..refs/pull/2023/head:/app/Uploads/AttachmentService.php diff --git a/app/Uploads/AttachmentService.php b/app/Uploads/AttachmentService.php index 7bafb6c0a..ae4fb6e96 100644 --- a/app/Uploads/AttachmentService.php +++ b/app/Uploads/AttachmentService.php @@ -2,6 +2,7 @@ use BookStack\Exceptions\FileUploadException; use Exception; +use Illuminate\Support\Str; use Symfony\Component\HttpFoundation\File\UploadedFile; class AttachmentService extends UploadService @@ -13,7 +14,7 @@ class AttachmentService extends UploadService */ protected function getStorage() { - $storageType = config('filesystems.default'); + $storageType = config('filesystems.attachments'); // Override default location if set to local public to ensure not visible. if ($storageType === 'local') { @@ -44,7 +45,7 @@ class AttachmentService extends UploadService public function saveNewUpload(UploadedFile $uploadedFile, $page_id) { $attachmentName = $uploadedFile->getClientOriginalName(); - $attachmentPath = $this->putFileInStorage($attachmentName, $uploadedFile); + $attachmentPath = $this->putFileInStorage($uploadedFile); $largestExistingOrder = Attachment::where('uploaded_to', '=', $page_id)->max('order'); $attachment = Attachment::forceCreate([ @@ -75,7 +76,7 @@ class AttachmentService extends UploadService } $attachmentName = $uploadedFile->getClientOriginalName(); - $attachmentPath = $this->putFileInStorage($attachmentName, $uploadedFile); + $attachmentPath = $this->putFileInStorage($uploadedFile); $attachment->name = $attachmentName; $attachment->path = $attachmentPath; @@ -174,21 +175,20 @@ class AttachmentService extends UploadService /** * Store a file in storage with the given filename - * @param $attachmentName * @param UploadedFile $uploadedFile * @return string * @throws FileUploadException */ - protected function putFileInStorage($attachmentName, UploadedFile $uploadedFile) + protected function putFileInStorage(UploadedFile $uploadedFile) { $attachmentData = file_get_contents($uploadedFile->getRealPath()); $storage = $this->getStorage(); $basePath = 'uploads/files/' . Date('Y-m-M') . '/'; - $uploadFileName = $attachmentName; + $uploadFileName = Str::random(16) . '.' . $uploadedFile->getClientOriginalExtension(); while ($storage->exists($basePath . $uploadFileName)) { - $uploadFileName = str_random(3) . $uploadFileName; + $uploadFileName = Str::random(3) . $uploadFileName; } $attachmentPath = $basePath . $uploadFileName;