peter
2025-11-26 566a1b9fda0276e2cc4a35f7ba322c0e599a2c84
src/main/java/com/nq/service/impl/FileUploadServiceImpl.java
@@ -1,12 +1,18 @@
package com.nq.service.impl;
import cn.hutool.core.util.StrUtil;
import com.google.common.collect.Lists;
import com.nq.common.ServerResponse;
import com.nq.service.IFileUploadService;
import com.nq.utils.FTPUtil;
import java.io.File;
import java.io.IOException;
import java.time.LocalDate;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import com.nq.utils.PropertiesUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
@@ -22,6 +28,91 @@
    private static final Logger log = LoggerFactory.getLogger(FileUploadServiceImpl.class);
    @Override
    public ServerResponse uploadFile(MultipartFile file) {
        // 兼容c端组件上传原理
        String fileType = file.getOriginalFilename();
        if (StrUtil.isEmpty(fileType) || fileType.contains("blob")) {
            fileType = "blob.png";
        }
        String fileName = file.getOriginalFilename();
        String fileExtentionName = fileName.substring(fileName.lastIndexOf(".") + 1);
        // 生成唯一的文件名
        String id = UUID.randomUUID().toString();
        String path = LocalDate.now() + "/" + id + "." + fileExtentionName;
        // 确保目标文件夹存在
        File targetDir = new File(PropertiesUtil.getProperty("loca.images.dir")  + "/" + LocalDate.now());
        if (!targetDir.exists()) {
            targetDir.mkdirs();
        }
        // 构建本地文件路径
        File localFile = new File(targetDir, id + "." + fileExtentionName);
        // 打印上传路径
        log.info("LocalFileUploadService uploadFile localFilePath: {}", localFile.getAbsolutePath());
        try {
            // 将文件保存到本地
            file.transferTo(localFile);
        } catch (IOException e) {
            log.error("LocalFileUploadService uploadFile IOException", e.getMessage(), e);
        }
        // 返回相对路径
        return ServerResponse.createBySuccess(path);
    }
//    public ServerResponse uploadFile(MultipartFile file) {
//        // 兼容c端组件上传原理
//
//        String fileName = file.getOriginalFilename();
//
//
//        String fileExtentionName = fileName.substring(fileName.lastIndexOf(".") + 1);
//
//
//        String uploadFileName = UUID.randomUUID() + "." + fileExtentionName;
//
//        String path = LocalDate.now() + "/" + uploadFileName;
//
//        // 确保目标文件夹存在
//        File targetDir = new File(PropertiesUtil.getProperty("ftp.server.http.prefix")  + "/" + LocalDate.now());
//        if (!targetDir.exists()) {
//            targetDir.mkdirs();
//        }
//
//        // 构建本地文件路径
//        File localFile = new File(targetDir, uploadFileName);
//
//        // 打印上传路径
//        log.info("LocalFileUploadService uploadFile localFilePath: {}", localFile.getAbsolutePath());
//
//        try {
//            // 将文件保存到本地
//            file.transferTo(localFile);
//
//            // 如果需要自定义元数据,可以在此处理
//            Map<String, String> metadata = new HashMap<>();
//            metadata.put("x-amz-meta-myVal", "test");  // 如果需要元数据,可以放在文件名或其他地方
//
//
//
//        } catch (IOException e) {
//            log.error("LocalFileUploadService uploadFile IOException", e.getMessage(), e);
//            log.error("上传文件异常 , 错误信息 = {}", e);
//        }
//        // 返回相对路径
//        return ServerResponse.createBySuccess(path);
//    }
    public ServerResponse upload(MultipartFile file, String path) {
        String fileName = file.getOriginalFilename();