From eac2652615d213edf3dd2906eea8acc3ddcc26ed Mon Sep 17 00:00:00 2001 From: "liang.chao" <1360241448@qq.com> Date: Thu, 18 Sep 2025 14:05:29 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../archive/FileManagementController.java | 15 +++++-- .../{FileUtils.java => webFileUtils.java} | 41 ++++++++----------- 2 files changed, 29 insertions(+), 27 deletions(-) rename bonus-admin/src/main/java/com/bonus/web/util/{FileUtils.java => webFileUtils.java} (78%) diff --git a/bonus-admin/src/main/java/com/bonus/web/controller/archive/FileManagementController.java b/bonus-admin/src/main/java/com/bonus/web/controller/archive/FileManagementController.java index 845b5ba..ba87410 100644 --- a/bonus-admin/src/main/java/com/bonus/web/controller/archive/FileManagementController.java +++ b/bonus-admin/src/main/java/com/bonus/web/controller/archive/FileManagementController.java @@ -15,12 +15,13 @@ import com.bonus.web.domain.vo.DaKyProFilesContentsVo; import com.bonus.web.mapper.FileManageMapper; import com.bonus.web.service.FileManageService; import com.bonus.web.service.ProjectService; -import com.bonus.web.util.FileUtils; +import com.bonus.web.util.webFileUtils; import com.fasterxml.jackson.databind.ObjectMapper; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -55,6 +56,12 @@ public class FileManagementController extends BaseController { @Autowired private FileManageMapper fileManageMapper; + @Autowired + private webFileUtils webFileUtils; + + @Value("${bonus.profile}") + private String uploadDir; + @ApiOperation(value = "档案管理列表") @GetMapping("getProjectList") @SysLog(title = "档案管理列表", module = "档案管理->项目管理", businessType = OperaType.QUERY, details = "档案管理列表", logType = 1) @@ -164,7 +171,7 @@ public class FileManagementController extends BaseController { return R.fail("文件命名不能包含" + s.getStandardName()); } } - FileDto upload = FileUtils.upload(file); + FileDto upload = webFileUtils.upload(file); dto.setFilePath(upload.getFilePath()); dto.setFileSize(upload.getFileSize()); dto.setFileName(upload.getFileName()); @@ -230,7 +237,7 @@ public class FileManagementController extends BaseController { return R.fail("文件命名不能包含" + s.getStandardName()); } } - FileDto upload = FileUtils.upload(file); + FileDto upload = webFileUtils.upload(file); dto.setFilePath(upload.getFilePath()); dto.setFileSize(upload.getFileSize()); dto.setFileName(upload.getFileName()); @@ -355,7 +362,7 @@ public class FileManagementController extends BaseController { return R.fail("文件未找到"); } - String filePath = record.getFilePath(); + String filePath = uploadDir + record.getFilePath(); String fileName = record.getFileName(); Path path = Paths.get(filePath); diff --git a/bonus-admin/src/main/java/com/bonus/web/util/FileUtils.java b/bonus-admin/src/main/java/com/bonus/web/util/webFileUtils.java similarity index 78% rename from bonus-admin/src/main/java/com/bonus/web/util/FileUtils.java rename to bonus-admin/src/main/java/com/bonus/web/util/webFileUtils.java index bec17fb..5b69849 100644 --- a/bonus-admin/src/main/java/com/bonus/web/util/FileUtils.java +++ b/bonus-admin/src/main/java/com/bonus/web/util/webFileUtils.java @@ -1,31 +1,16 @@ package com.bonus.web.util; -import com.bonus.common.config.BonusConfig; -import com.bonus.common.constant.Constants; import com.bonus.common.core.domain.entity.SysDictData; -import com.bonus.common.utils.DateUtils; -import com.bonus.common.utils.StringUtils; import com.bonus.common.utils.bean.FileDto; -import com.bonus.common.utils.file.FileTypeUtils; -import com.bonus.common.utils.file.FileUploadUtils; -import com.bonus.common.utils.file.MimeTypeUtils; -import com.bonus.common.utils.uuid.IdUtils; import com.bonus.system.mapper.SysDictDataMapper; -import org.apache.commons.io.FilenameUtils; -import org.apache.commons.io.IOUtils; -import org.apache.commons.lang3.ArrayUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import org.springframework.web.multipart.MultipartFile; import javax.annotation.PostConstruct; import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import java.io.*; import java.math.BigDecimal; -import java.net.URLEncoder; -import java.nio.charset.StandardCharsets; import java.util.*; /** @@ -33,13 +18,14 @@ import java.util.*; * * @author bonus */ -public class FileUtils { +@Component +public class webFileUtils { // 常见的图片扩展名(小写) private static final Set IMAGE_EXTENSIONS; private static String UPLOAD_DIR; @Resource - private static SysDictDataMapper dictDataMapper; + private SysDictDataMapper dictDataMapper; private static final List BLOCKED_PATTERNS = Arrays.asList( "<", ">", "[", "]", "(", ")", "/", "'", "\"", "@", "!", "+", @@ -72,7 +58,7 @@ public class FileUtils { } - public static final FileDto upload(MultipartFile file) throws IOException { + public FileDto upload(MultipartFile file) throws IOException { FileDto bean = new FileDto(); if (file != null && !file.isEmpty()) { // 验证文件类型 @@ -89,7 +75,7 @@ public class FileUtils { SysDictData fileSizeLimit = selectDictDataByType("file_size_limit"); // 转换为 MB(保留 2 位小数) double sizeInMB = file.getSize() / (1024.0 * 1024.0); - if (sizeInMB > Double.parseDouble(fileSizeLimit.getDictValue())){ + if (sizeInMB > Double.parseDouble(fileSizeLimit.getDictValue())) { throw new RuntimeException("文件大小超出限制"); } String fileExtension = originalFileName != null ? originalFileName.split("\\.")[1] : ""; @@ -104,10 +90,18 @@ public class FileUtils { } String fileName = file.getOriginalFilename(); String sourceFileName = System.currentTimeMillis() + "_" + file.getOriginalFilename(); - File targetFile = new File(UPLOAD_DIR, fileName); + // 构建本地存储路径 + File uploadDir = new File(UPLOAD_DIR, "file"); + if (!uploadDir.exists()) { + uploadDir.mkdirs(); + } + + File targetFile = new File(uploadDir, fileName); file.transferTo(targetFile); - String pathName = targetFile.getAbsolutePath(); - bean.setFilePath(pathName); + + // 存储相对路径(统一使用 "/",不使用 File.separator) + String relativePath = "/file/" + fileName; + bean.setFilePath(relativePath); bean.setFileName(fileName); bean.setSourceFileName(sourceFileName); bean.setFileSize(new BigDecimal(file.getSize())); @@ -132,7 +126,8 @@ public class FileUtils { String ext = fileExtension.toLowerCase().trim(); return IMAGE_EXTENSIONS.contains(ext); } - public static SysDictData selectDictDataByType(String dataType) { + + public SysDictData selectDictDataByType(String dataType) { List sysDictData = dictDataMapper.selectDictDataByType(dataType); return sysDictData.get(0); }