Kaynağa Gözat

修复获取文件名bug

lh 1 ay önce
ebeveyn
işleme
7137db76f3
1 değiştirilmiş dosya ile 9 ekleme ve 3 silme
  1. 9 3
      app/Services/DeepSeek/DeepSeekService.php

+ 9 - 3
app/Services/DeepSeek/DeepSeekService.php

@@ -278,10 +278,16 @@ class DeepSeekService
         }
         
         // 获取原始文件名(不含扩展名)作为script_name
+        // 注意:不能用pathinfo()取FILENAME,PHP在部分Linux环境下对中文等
+        // 多字节文件名会解析为空(PHP Bug #47954 / #30014),这里改为按扩展名
+        // 字节安全剥离,不依赖服务器locale设置
         $originalName = $file->getClientOriginalName();
-        $script_name = pathinfo($originalName, PATHINFO_FILENAME);
-        
-        if (!$script_name) {
+        $extension = $file->getClientOriginalExtension();
+        $script_name = $extension !== '' && substr($originalName, -strlen($extension) - 1) === '.' . $extension
+            ? substr($originalName, 0, -strlen($extension) - 1)
+            : $originalName;
+
+        if ($script_name === '') {
             Utils::throwError('20003:未识别到剧本名,请联系管理员');
         }