From c6a29e3af4ffdbb1780c34f2846998912f33ab55 Mon Sep 17 00:00:00 2001 From: vedatakd Date: Wed, 15 Sep 2021 12:33:59 +0300 Subject: [PATCH] fixed upload api --- .../media-field_type/resources/js/upload.js | 3 -- .../src/Http/Controller/UploadController.php | 37 +++++++++++++++---- 2 files changed, 29 insertions(+), 11 deletions(-) diff --git a/addons/default/visiosoft/media-field_type/resources/js/upload.js b/addons/default/visiosoft/media-field_type/resources/js/upload.js index caa1b20de..7c8281177 100644 --- a/addons/default/visiosoft/media-field_type/resources/js/upload.js +++ b/addons/default/visiosoft/media-field_type/resources/js/upload.js @@ -40,9 +40,6 @@ $(function () { sending: function (file, xhr, formData) { formData.append('folder', element.data('folder')); }, - renameFile: function (file) { - return new Date().getTime() + '_' + file.name.replace(/ /g, '_'); - }, accept: function (file, done) { $.get(REQUEST_ROOT_PATH + '/streams/media-field_type/exists/' + element.data('folder'), {'file': file.name}, function (data) { if (data.exists) { diff --git a/addons/default/visiosoft/media-field_type/src/Http/Controller/UploadController.php b/addons/default/visiosoft/media-field_type/src/Http/Controller/UploadController.php index 4dce2c776..0d849add8 100644 --- a/addons/default/visiosoft/media-field_type/src/Http/Controller/UploadController.php +++ b/addons/default/visiosoft/media-field_type/src/Http/Controller/UploadController.php @@ -3,6 +3,7 @@ use Anomaly\Streams\Platform\Image\Image; use Anomaly\Streams\Platform\Model\Files\FilesFilesEntryModel; use Illuminate\Http\Request; +use Illuminate\Http\UploadedFile; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Storage; use Visiosoft\MediaFieldType\Table\UploadTableBuilder; @@ -48,19 +49,39 @@ class UploadController extends AdminController ); } + public function changeFileName($file) + { + + $file_name = $file->getClientOriginalName(); + $ext = pathinfo($file_name, PATHINFO_EXTENSION); + + $file_name = str_replace('.' . $ext, '', $file_name); + $file_name = preg_replace('/[^A-Za-z0-9 _-]/', '', $file_name); + + $file = new UploadedFile($file->getPathname(), + strtotime('now') . "-" . $file_name . "." . $ext, + $file->getClientMimeType(), + $file->getError()); + + return $file; + } + public function upload() { - $path = $_FILES['upload']['name']; + $file_request = $this->changeFileName($this->request->file('upload')); + + $path = $file_request->getClientOriginalName(); + $ext = pathinfo($path, PATHINFO_EXTENSION); - if($ext == 'svg') { + if ($ext == 'svg') { $mimes [0] = 'svg'; - $file = $this->uploader->upload($this->request->file('upload'), $this->folders->find($this->request->get('folder'))); + $file = $this->uploader->upload($file_request, $this->folders->find($this->request->get('folder'))); } else { - $mimes = explode('/', $this->request->file('upload')->getMimeType()); + $mimes = explode('/', $file_request->getMimeType()); if ($mimes[0] == 'image') { - $file = $this->uploader->upload($this->request->file('upload'), $this->folders->find($this->request->get('folder'))); + $file = $this->uploader->upload($file_request, $this->folders->find($this->request->get('folder'))); } else if ($doc_folder = app(FolderRepositoryInterface::class)->findBySlug('ads_documents')) { - $file = $this->uploader->upload($this->request->file('upload'), $doc_folder); + $file = $this->uploader->upload($file_request, $doc_folder); } else { return $this->response->json(['error' => trans('visiosoft.field_type.media::message.error_upload_docs')], 500); } @@ -93,7 +114,7 @@ class UploadController extends AdminController } - $fullImg = WaterMark::make($this->request->file('upload')->getRealPath()); + $fullImg = WaterMark::make($file_request->getRealPath()); if ($settings_value['image_resize_backend']) { $fullImg = $fullImg->resize(null, $settings_value['full_image_height'], @@ -102,7 +123,7 @@ class UploadController extends AdminController }); } - $mdImg = WaterMark::make($this->request->file('upload')->getRealPath()) + $mdImg = WaterMark::make($file_request->getRealPath()) ->resize(null, $settings_value['medium_image_height'], function ($constraint) { $constraint->aspectRatio(); });