From 53442087a0a6c6e27c59dac8475521582405565d Mon Sep 17 00:00:00 2001 From: Snow Shi Date: Tue, 18 Feb 2025 10:31:30 +0800 Subject: [PATCH] handle CJK characters within the filename --- src/Repositories/FileRepository.php | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/Repositories/FileRepository.php b/src/Repositories/FileRepository.php index a25d3e3b..5390ebbe 100644 --- a/src/Repositories/FileRepository.php +++ b/src/Repositories/FileRepository.php @@ -206,11 +206,16 @@ protected function getBasename(Upload $upload, string $uuid): string { $name = pathinfo($upload->getClientOriginalName(), PATHINFO_FILENAME); - $slug = trim(Str::slug($name)); + $safeName = preg_replace_callback('/[^a-zA-Z0-9_\-\.]/u', function ($match) { + return urlencode($match[0]); + }, $name); + + $safeName = str_replace(['%2F', '%5C'], '', $safeName); + $safeName = urldecode($safeName); return sprintf( '%s.%s', - empty($slug) ? $uuid : $slug, + empty($safeName) ? $uuid : $safeName, $this->determineExtension($upload) ); }