Update LocalUploadUtil.java

main
pveayojnc 4 months ago
parent 6326377e7e
commit 56e0f93811

@ -1,67 +1,108 @@
package com.zsz.util; package com.zsz.util;
// 导入自定义的系统配置类,用于获取系统相关配置信息
import com.zsz.config.SystemUtil; import com.zsz.config.SystemUtil;
// 导入 Lombok 的日志注解,可自动生成日志记录对象
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
// 导入 Spring 框架的 Component 注解,将该类标记为组件,以便 Spring 进行管理
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
// 导入 Spring 框架处理文件上传的 MultipartFile 类
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
// 导入 Spring 框架的资源注入注解
import javax.annotation.Resource; import javax.annotation.Resource;
// 导入 Java 的文件操作类
import java.io.File; import java.io.File;
// 导入 Java 的输入输出异常类
import java.io.IOException; import java.io.IOException;
// 导入 Java 的日期格式化类
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
// 导入 Java 的日期类
import java.util.Date; import java.util.Date;
// 导入 Java 的随机数生成类
import java.util.Random; import java.util.Random;
/**
* LocalUploadUtil
*
*/
// 将该类标记为 Spring 组件,以便 Spring 自动扫描并管理
@Component @Component
// 使用 Lombok 的 Slf4j 注解,自动生成日志记录对象
@Slf4j @Slf4j
public class LocalUploadUtil { public class LocalUploadUtil {
// 定义上传文件路径的前缀
public static final String PATH_PREFIX = "/upload/"; public static final String PATH_PREFIX = "/upload/";
// 注入系统配置类的实例,用于获取文件保存的前缀路径
@Resource @Resource
private SystemUtil systemUtil; private SystemUtil systemUtil;
/**
*
* @param file MultipartFile
* @return
*/
public String upload(MultipartFile file) { public String upload(MultipartFile file) {
// 生成新的文件名
String newFileName = genNewFileName(file); String newFileName = genNewFileName(file);
// 创建本地文件夹 // 创建本地文件夹对象,使用系统配置中的文件前缀路径
File fileDirectory = new File(systemUtil.getFilePrefix()); File fileDirectory = new File(systemUtil.getFilePrefix());
// 检查文件夹是否存在
if (!fileDirectory.exists()) { if (!fileDirectory.exists()) {
// 如果不存在,创建文件夹 // 如果文件夹不存在,则尝试创建
if (!fileDirectory.mkdir()) { if (!fileDirectory.mkdir()) {
// 如果创建失败,抛出运行时异常
throw new RuntimeException("文件夹创建失败,路径为:" + fileDirectory); throw new RuntimeException("文件夹创建失败,路径为:" + fileDirectory);
} }
} }
try { try {
//创建文件 // 创建目标文件对象,使用系统配置的文件前缀和新生成的文件名
File destFile = new File(systemUtil.getFilePrefix() + newFileName); File destFile = new File(systemUtil.getFilePrefix() + newFileName);
// 文件传输到本地 // 将上传的文件传输到目标文件
file.transferTo(destFile); file.transferTo(destFile);
} catch (IOException e) { } catch (IOException e) {
// 记录文件创建失败的错误日志
log.error("文件创建失败:{}", e.getMessage(), e); log.error("文件创建失败:{}", e.getMessage(), e);
// 抛出运行时异常,提示文件创建失败
throw new RuntimeException("文件创建失败:{}" + e.getMessage()); throw new RuntimeException("文件创建失败:{}" + e.getMessage());
} }
// 返回上传后文件的相对路径
return PATH_PREFIX + newFileName; return PATH_PREFIX + newFileName;
} }
/** /**
* *
* @param file
* @return
*/ */
private static String genNewFileName(MultipartFile file) { private static String genNewFileName(MultipartFile file) {
// 创建日期格式化对象,指定日期格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss"); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss");
// 创建 StringBuilder 对象,用于构建文件名
StringBuilder fileName = new StringBuilder(); StringBuilder fileName = new StringBuilder();
fileName.append(sdf.format(new Date())).append(new Random().nextInt(100)).append(getSuffixName(file)); // 将当前日期格式化后添加到文件名中
fileName.append(sdf.format(new Date()));
// 生成一个 0 到 99 之间的随机数并添加到文件名中
fileName.append(new Random().nextInt(100));
// 获取文件的后缀名并添加到文件名中
fileName.append(getSuffixName(file));
// 返回生成的新文件名
return fileName.toString(); return fileName.toString();
} }
/** /**
* *
* @param file
* @return
*/ */
private static String getSuffixName(MultipartFile file) { private static String getSuffixName(MultipartFile file) {
// 获取文件的原始文件名
String fileName = file.getOriginalFilename(); String fileName = file.getOriginalFilename();
// 从文件名中截取后缀名
String suffixName = fileName.substring(fileName.lastIndexOf(".")); String suffixName = fileName.substring(fileName.lastIndexOf("."));
// 返回文件的后缀名
return suffixName; return suffixName;
} }
}
}
Loading…
Cancel
Save