From 039e200d3f99d9e644cda0417e84af16b96103e2 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Wed, 25 Feb 2026 16:13:41 +0800
Subject: [PATCH] feat(fileUpload): 更新文件上传功能以改进文件命名和显示

---
 src/main/java/cc/mrbird/febs/ai/controller/fileUpload/FileUploadController.java |   28 ++++++++++++++++++++++++----
 1 files changed, 24 insertions(+), 4 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/ai/controller/fileUpload/FileUploadController.java b/src/main/java/cc/mrbird/febs/ai/controller/fileUpload/FileUploadController.java
index 115bcb7..c8203bf 100644
--- a/src/main/java/cc/mrbird/febs/ai/controller/fileUpload/FileUploadController.java
+++ b/src/main/java/cc/mrbird/febs/ai/controller/fileUpload/FileUploadController.java
@@ -84,7 +84,7 @@
             }
 
             // 生成唯一文件名
-            String uniqueFileName = fileName+ "_" + UUID.randomUUID().toString() ;
+            String uniqueFileName =UUID.randomUUID().toString()+":"+  fileName;
             Path targetFilePath = uploadPath.resolve(uniqueFileName);
 
             // 构建公司专属分片目录
@@ -233,8 +233,14 @@
             } else {
                 log.debug("收到完整文件请求,返回初始片段");
                 
-                // 没有Range头,返回初始片段(约30秒内容)
-                long actualEnd = Math.min(MAX_INITIAL_SEGMENT, fileSize - 1);
+                // 没有Range头,返回文件大小的10分之一和15MB中较小的那个
+                long oneTenthSize = fileSize / 10;
+                // 计算10分之一和15MB的较小值
+                long maxInitialSize = Math.min(oneTenthSize, MAX_INITIAL_SEGMENT);
+                // 确保至少返回1字节,且不超过文件大小
+                long actualEnd = Math.min(Math.max(maxInitialSize, 1), fileSize - 1);
+                log.debug("返回初始片段: {} bytes (10分之一大小: {} bytes, 15MB限制: {} bytes, 文件总大小: {} bytes)", 
+                          actualEnd + 1, oneTenthSize, MAX_INITIAL_SEGMENT, fileSize);
 
                 // 设置响应状态和头部信息
                 response.setStatus(HttpStatus.PARTIAL_CONTENT.value()); // 使用206状态码,因为只返回部分内容
@@ -341,7 +347,14 @@
                 if (Files.isRegularFile(path)) {
                     try {
                         FileInfo fileInfo = new FileInfo();
-                        fileInfo.setFileName(path.getFileName().toString());
+                        String totalName = path.getFileName().toString();
+                        String[] s = totalName.split(":");
+                        if (s.length > 1){
+                            fileInfo.setFileName(s[1]);
+                        }else{
+                            fileInfo.setFileName(totalName);
+                        }
+                        fileInfo.setFileSysName(totalName);
                         fileInfo.setFileSize(Files.size(path));
                         fileInfo.setUploadTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(Files.getLastModifiedTime(path).toMillis())));
                         fileList.add(fileInfo);
@@ -391,8 +404,15 @@
      */
     public static class FileInfo {
         private String fileName;
+        private String fileSysName;
         private long fileSize;
         private String uploadTime;
+        public String getFileSysName() {
+            return fileSysName;
+        }
+        public void setFileSysName(String fileSysName) {
+            this.fileSysName = fileSysName;
+        }
 
         public String getFileName() {
             return fileName;

--
Gitblit v1.9.1