diff --git a/app/Http/Requests/FileFunctions/UploadRequest.php b/app/Http/Requests/FileFunctions/UploadRequest.php index b1dc31e8..4fe22286 100644 --- a/app/Http/Requests/FileFunctions/UploadRequest.php +++ b/app/Http/Requests/FileFunctions/UploadRequest.php @@ -1,4 +1,5 @@ 'required|string', 'folder_id' => 'nullable|uuid', - 'file' => ['required', 'file', new DisabledMimetypes], + 'file' => ['required', 'file', new DisabledMimetypes], ]; } } diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index c37df08d..d159bed8 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -22,7 +22,11 @@ class AppServiceProvider extends ServiceProvider */ public function boot() { - $app_locale = get_setting('language') ?? 'en'; + try { + $app_locale = get_setting('language') ?? 'en'; + } catch (\PDOException $exception) { + $app_locale = 'en'; + } // Set locale for application app()->setLocale($app_locale); diff --git a/app/Services/FileManagerService.php b/app/Services/FileManagerService.php index b5cc362d..00564d54 100644 --- a/app/Services/FileManagerService.php +++ b/app/Services/FileManagerService.php @@ -402,7 +402,7 @@ class FileManagerService 'type' => get_file_type($file_mimetype), 'folder_id' => $request->folder_id, 'metadata' => $metadata, - 'name' => $user_file_name, + 'name' => $request->filename, 'basename' => $disk_file_name, 'author' => $shared ? 'visitor' : 'user', 'thumbnail' => $thumbnail, diff --git a/resources/js/helpers.js b/resources/js/helpers.js index 386c444b..4a9cdaa0 100644 --- a/resources/js/helpers.js +++ b/resources/js/helpers.js @@ -209,13 +209,13 @@ const Helpers = { isNotGeneralError = true, - striped_name = item.file.name - .replace(/[^A-Za-z 0-9 \.,\?""!@#\$%\^&\*\(\)-_=\+;:<>\/\\\|\}\{\[\]`~]*/g, ''), + striped_spaces = item.file.name.replace(/\s/g, '-'), + striped_to_safe_characters = striped_spaces.match(/^[A-Za-z0-9._~()'!*:@,;+?-\W]*$/g), - filename = Array(16) + source_name = Array(16) .fill(0) .map(x => Math.random().toString(36).charAt(2)) - .join('') + '-' + striped_name + '.part' + .join('') + '-' + striped_to_safe_characters + '.part' do { let isLast = chunks.length === 1, @@ -223,7 +223,8 @@ const Helpers = { attempts = 0 // Set form data - formData.set('file', chunk, filename); + formData.set('filename', item.file.name); + formData.set('file', chunk, source_name); formData.set('folder_id', item.folder_id) formData.set('is_last', isLast); diff --git a/tests/Feature/Admin/AdminTest.php b/tests/Feature/Admin/AdminTest.php index 87fff466..318b9e2e 100644 --- a/tests/Feature/Admin/AdminTest.php +++ b/tests/Feature/Admin/AdminTest.php @@ -361,6 +361,7 @@ class AdminTest extends TestCase ->create("fake-file-$index.pdf", 1200, 'application/pdf'); $this->postJson('/api/upload', [ + 'filename' => $file->name, 'file' => $file, 'folder_id' => null, 'is_last' => true, diff --git a/tests/Feature/FileManager/FileTest.php b/tests/Feature/FileManager/FileTest.php index f45c32a3..e97fd7c0 100644 --- a/tests/Feature/FileManager/FileTest.php +++ b/tests/Feature/FileManager/FileTest.php @@ -55,6 +55,7 @@ class FileTest extends TestCase Sanctum::actingAs($user); $this->postJson('/api/upload', [ + 'filename' => $file->name, 'file' => $file, 'folder_id' => null, 'is_last' => true, @@ -97,6 +98,7 @@ class FileTest extends TestCase Sanctum::actingAs($user); $this->postJson('/api/upload', [ + 'filename' => $file->name, 'file' => $file, 'folder_id' => null, 'is_last' => true, @@ -266,6 +268,7 @@ class FileTest extends TestCase ->create("fake-file-$index.pdf", 1200, 'application/pdf'); $this->postJson('/api/upload', [ + 'filename' => $file->name, 'file' => $file, 'folder_id' => null, 'is_last' => true, @@ -324,6 +327,7 @@ class FileTest extends TestCase ->create("fake-file-$index.pdf", 1200, 'application/pdf'); $this->postJson('/api/upload', [ + 'filename' => $file->name, 'file' => $file, 'folder_id' => null, 'is_last' => true, diff --git a/tests/Feature/FileManager/FolderTest.php b/tests/Feature/FileManager/FolderTest.php index 40179058..6d3b0f75 100644 --- a/tests/Feature/FileManager/FolderTest.php +++ b/tests/Feature/FileManager/FolderTest.php @@ -415,6 +415,7 @@ class FolderTest extends TestCase ->create("fake-file-$index.pdf", 1200, 'application/pdf'); $this->postJson('/api/upload', [ + 'filename' => $file->name, 'file' => $file, 'folder_id' => $folder->id, 'is_last' => true, @@ -483,6 +484,7 @@ class FolderTest extends TestCase ->create("fake-file-$index.pdf", 1200, 'application/pdf'); $this->postJson('/api/upload', [ + 'filename' => $file->name, 'file' => $file, 'folder_id' => $folder->id, 'is_last' => true, diff --git a/tests/Feature/FileManager/TrashTest.php b/tests/Feature/FileManager/TrashTest.php index 08d51a3d..4de052bf 100644 --- a/tests/Feature/FileManager/TrashTest.php +++ b/tests/Feature/FileManager/TrashTest.php @@ -89,6 +89,7 @@ class TrashTest extends TestCase ->image('fake-image.jpg'); $this->postJson('/api/upload', [ + 'filename' => $image->name, 'file' => $image, 'folder_id' => null, 'is_last' => true,