From eb357bb9938d569734b04948695726b80c5dfb85 Mon Sep 17 00:00:00 2001
From: peter <14100000001@qq.com>
Date: Wed, 19 Nov 2025 10:40:27 +0800
Subject: [PATCH] 代理后台新增删除用户、提现审核

---
 src/main/java/com/nq/service/impl/FileUploadServiceImpl.java |  111 ++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 72 insertions(+), 39 deletions(-)

diff --git a/src/main/java/com/nq/service/impl/FileUploadServiceImpl.java b/src/main/java/com/nq/service/impl/FileUploadServiceImpl.java
index 34b5b4c..d500308 100644
--- a/src/main/java/com/nq/service/impl/FileUploadServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/FileUploadServiceImpl.java
@@ -3,10 +3,15 @@
 import com.google.common.collect.Lists;
 import com.nq.common.ServerResponse;
 import com.nq.service.IFileUploadService;
-import com.nq.utils.ftp.FTPUtil;
 import java.io.File;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Random;
 import java.util.UUID;
 
+import com.nq.utils.PropertiesUtil;
+import com.nq.utils.ftp.FTPUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
@@ -23,60 +28,88 @@
 
 
     public ServerResponse upload(MultipartFile file, String path) {
-
-        String fileName = file.getOriginalFilename();
-
-
-        String fileExtentionName = fileName.substring(fileName.lastIndexOf(".") + 1);
-
-
-        String uploadFileName = UUID.randomUUID() + "." + fileExtentionName;
-
-
-        File fileDir = new File(path);
-
-
-        if (!fileDir.exists()) {
-
-
-            fileDir.setWritable(true);
-
-            fileDir.mkdirs();
-
+        path = PropertiesUtil.getProperty("ftp.address");
+        // 参数校验
+        if (file == null || file.isEmpty()) {
+            return ServerResponse.createByErrorMsg("文件不能为空");
         }
-
-
-        File tartgetFile = new File(path, uploadFileName);
-
-        boolean result = false;
 
         try {
+            // 获取原始文件名
+            String fileName = file.getOriginalFilename();
+            if (fileName == null || fileName.trim().isEmpty()) {
+                return ServerResponse.createByErrorMsg("文件名无效");
+            }
 
-            file.transferTo(tartgetFile);
+            // 安全地获取文件扩展名
+            String fileExtensionName = "";
+            int lastDotIndex = fileName.lastIndexOf(".");
+            if (lastDotIndex > 0 && lastDotIndex < fileName.length() - 1) {
+                fileExtensionName = fileName.substring(lastDotIndex + 1).toLowerCase();
+            } else {
+                return ServerResponse.createByErrorMsg("文件格式错误,无法识别扩展名");
+            }
 
+            // 验证文件扩展名是否合法
+            if (!isValidFileExtension(fileExtensionName)) {
+                return ServerResponse.createByErrorMsg("不支持的文件类型: " + fileExtensionName);
+            }
 
-            result = FTPUtil.uploadFile(Lists.newArrayList(new File[]{tartgetFile}));
+            // 生成唯一文件名:时间戳 + 随机数
+            String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss_SSS").format(new Date());
+            int randomNum = new Random().nextInt(99999);
+            String uploadFileName = timeStamp + "_" + String.format("%05d", randomNum) + "." + fileExtensionName;
 
+            // 确保目标目录存在
+            File targetDir = new File(path);
+            if (!targetDir.exists()) {
+                if (!targetDir.mkdirs()) {
+                    return ServerResponse.createByErrorMsg("无法创建上传目录");
+                }
+            }
 
-            tartgetFile.delete();
+            // 创建目标文件
+            File targetFile = new File(targetDir, uploadFileName);
 
+            // 保存文件
+            file.transferTo(targetFile);
+
+            // 验证文件是否成功保存
+            if (!targetFile.exists() || targetFile.length() == 0) {
+                return ServerResponse.createByErrorMsg("文件保存失败");
+            }
+
+            return ServerResponse.createBySuccess(uploadFileName);
+
+        } catch (IOException e) {
+            e.printStackTrace();
+            return ServerResponse.createByErrorMsg("文件上传失败: " + e.getMessage());
         } catch (Exception e) {
+            e.printStackTrace();
+            return ServerResponse.createByErrorMsg("上传过程发生异常: " + e.getMessage());
+        }
+    }
 
-            log.error("上传文件异常 , 错误信息 = {}", e);
-
-            return null;
-
+    /**
+     * 验证文件扩展名是否合法
+     */
+    private boolean isValidFileExtension(String fileExtension) {
+        if (fileExtension == null || fileExtension.trim().isEmpty()) {
+            return false;
         }
 
+        // 定义允许的文件类型
+        String[] allowedExtensions = {
+                "jpg", "jpeg", "png"
+        };
 
-        if (result) {
-
-            return ServerResponse.createBySuccess(tartgetFile.getName());
-
+        for (String allowedExt : allowedExtensions) {
+            if (allowedExt.equalsIgnoreCase(fileExtension)) {
+                return true;
+            }
         }
 
-        return ServerResponse.createByErrorMsg("上传失败");
-
+        return false;
     }
 
 }

--
Gitblit v1.9.3