代码提交

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.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);

View File

@ -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<String> IMAGE_EXTENSIONS;
private static String UPLOAD_DIR;
@Resource
private static SysDictDataMapper dictDataMapper;
private SysDictDataMapper dictDataMapper;
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();
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> sysDictData = dictDataMapper.selectDictDataByType(dataType);
return sysDictData.get(0);
}