代码提交

This commit is contained in:
liang.chao 2025-09-18 14:05:29 +08:00
parent d6e0432b1f
commit eac2652615
2 changed files with 29 additions and 27 deletions

View File

@ -15,12 +15,13 @@ import com.bonus.web.domain.vo.DaKyProFilesContentsVo;
import com.bonus.web.mapper.FileManageMapper; import com.bonus.web.mapper.FileManageMapper;
import com.bonus.web.service.FileManageService; import com.bonus.web.service.FileManageService;
import com.bonus.web.service.ProjectService; 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 com.fasterxml.jackson.databind.ObjectMapper;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
@ -55,6 +56,12 @@ public class FileManagementController extends BaseController {
@Autowired @Autowired
private FileManageMapper fileManageMapper; private FileManageMapper fileManageMapper;
@Autowired
private webFileUtils webFileUtils;
@Value("${bonus.profile}")
private String uploadDir;
@ApiOperation(value = "档案管理列表") @ApiOperation(value = "档案管理列表")
@GetMapping("getProjectList") @GetMapping("getProjectList")
@SysLog(title = "档案管理列表", module = "档案管理->项目管理", businessType = OperaType.QUERY, details = "档案管理列表", logType = 1) @SysLog(title = "档案管理列表", module = "档案管理->项目管理", businessType = OperaType.QUERY, details = "档案管理列表", logType = 1)
@ -164,7 +171,7 @@ public class FileManagementController extends BaseController {
return R.fail("文件命名不能包含" + s.getStandardName()); return R.fail("文件命名不能包含" + s.getStandardName());
} }
} }
FileDto upload = FileUtils.upload(file); FileDto upload = webFileUtils.upload(file);
dto.setFilePath(upload.getFilePath()); dto.setFilePath(upload.getFilePath());
dto.setFileSize(upload.getFileSize()); dto.setFileSize(upload.getFileSize());
dto.setFileName(upload.getFileName()); dto.setFileName(upload.getFileName());
@ -230,7 +237,7 @@ public class FileManagementController extends BaseController {
return R.fail("文件命名不能包含" + s.getStandardName()); return R.fail("文件命名不能包含" + s.getStandardName());
} }
} }
FileDto upload = FileUtils.upload(file); FileDto upload = webFileUtils.upload(file);
dto.setFilePath(upload.getFilePath()); dto.setFilePath(upload.getFilePath());
dto.setFileSize(upload.getFileSize()); dto.setFileSize(upload.getFileSize());
dto.setFileName(upload.getFileName()); dto.setFileName(upload.getFileName());
@ -355,7 +362,7 @@ public class FileManagementController extends BaseController {
return R.fail("文件未找到"); return R.fail("文件未找到");
} }
String filePath = record.getFilePath(); String filePath = uploadDir + record.getFilePath();
String fileName = record.getFileName(); String fileName = record.getFileName();
Path path = Paths.get(filePath); Path path = Paths.get(filePath);

View File

@ -1,31 +1,16 @@
package com.bonus.web.util; 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.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.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 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.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*; import java.io.*;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.*; import java.util.*;
/** /**
@ -33,13 +18,14 @@ import java.util.*;
* *
* @author bonus * @author bonus
*/ */
public class FileUtils { @Component
public class webFileUtils {
// 常见的图片扩展名小写 // 常见的图片扩展名小写
private static final Set<String> IMAGE_EXTENSIONS; private static final Set<String> IMAGE_EXTENSIONS;
private static String UPLOAD_DIR; private static String UPLOAD_DIR;
@Resource @Resource
private static SysDictDataMapper dictDataMapper; private SysDictDataMapper dictDataMapper;
private static final List<String> BLOCKED_PATTERNS = Arrays.asList( private static final List<String> 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(); FileDto bean = new FileDto();
if (file != null && !file.isEmpty()) { if (file != null && !file.isEmpty()) {
// 验证文件类型 // 验证文件类型
@ -89,7 +75,7 @@ public class FileUtils {
SysDictData fileSizeLimit = selectDictDataByType("file_size_limit"); SysDictData fileSizeLimit = selectDictDataByType("file_size_limit");
// 转换为 MB保留 2 位小数 // 转换为 MB保留 2 位小数
double sizeInMB = file.getSize() / (1024.0 * 1024.0); double sizeInMB = file.getSize() / (1024.0 * 1024.0);
if (sizeInMB > Double.parseDouble(fileSizeLimit.getDictValue())){ if (sizeInMB > Double.parseDouble(fileSizeLimit.getDictValue())) {
throw new RuntimeException("文件大小超出限制"); throw new RuntimeException("文件大小超出限制");
} }
String fileExtension = originalFileName != null ? originalFileName.split("\\.")[1] : ""; String fileExtension = originalFileName != null ? originalFileName.split("\\.")[1] : "";
@ -104,10 +90,18 @@ public class FileUtils {
} }
String fileName = file.getOriginalFilename(); String fileName = file.getOriginalFilename();
String sourceFileName = System.currentTimeMillis() + "_" + 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); file.transferTo(targetFile);
String pathName = targetFile.getAbsolutePath();
bean.setFilePath(pathName); // 存储相对路径统一使用 "/"不使用 File.separator
String relativePath = "/file/" + fileName;
bean.setFilePath(relativePath);
bean.setFileName(fileName); bean.setFileName(fileName);
bean.setSourceFileName(sourceFileName); bean.setSourceFileName(sourceFileName);
bean.setFileSize(new BigDecimal(file.getSize())); bean.setFileSize(new BigDecimal(file.getSize()));
@ -132,7 +126,8 @@ public class FileUtils {
String ext = fileExtension.toLowerCase().trim(); String ext = fileExtension.toLowerCase().trim();
return IMAGE_EXTENSIONS.contains(ext); return IMAGE_EXTENSIONS.contains(ext);
} }
public static SysDictData selectDictDataByType(String dataType) {
public SysDictData selectDictDataByType(String dataType) {
List<SysDictData> sysDictData = dictDataMapper.selectDictDataByType(dataType); List<SysDictData> sysDictData = dictDataMapper.selectDictDataByType(dataType);
return sysDictData.get(0); return sysDictData.get(0);
} }