From 1a28e6f0b4ce74695efd9190790454f82dc5b644 Mon Sep 17 00:00:00 2001 From: jiang Date: Wed, 26 Jun 2024 10:42:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=AD=98=E5=82=A8=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/core/utils/file/FileUtils.java | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/file/FileUtils.java b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/file/FileUtils.java index 80d9926..3973604 100644 --- a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/file/FileUtils.java +++ b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/file/FileUtils.java @@ -8,10 +8,15 @@ import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.text.SimpleDateFormat; +import java.util.Date; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang3.ArrayUtils; import com.bonus.common.core.utils.StringUtils; +import org.springframework.web.multipart.MultipartFile; /** * 文件处理工具类 @@ -250,4 +255,53 @@ public class FileUtils String encode = URLEncoder.encode(s, StandardCharsets.UTF_8.toString()); return encode.replaceAll("\\+", "%20"); } + + + /** + * 生成统一格式的文件名 + * 格式为:uploads/yyyy/MM/dd/fileName + * + * @param fileName 原始文件名 + * @return 生成的文件名 + */ + public static String generateObjectName(String fileName) { + // 生成安全的文件名,例如使用UUID加上原始文件扩展名 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); + String datePath = sdf.format(new Date()); + return "uploads/" + datePath + "/" + fileName; + } + + /** + * 从文件路径中提取文件名 + * + * @param filePath 文件路径 + * @return 文件名 + */ + public static String getFileNameFromPath(String filePath) { + Path path = Paths.get(filePath); + return path.getFileName().toString(); + } + + /** + * 将MultipartFile转换为File对象 + * 在临时目录中创建文件,并将上传文件内容写入 + * + * @param multiFile MultipartFile对象 + * @return 转换后的File对象,如果转换失败返回null + */ + public static File multipartFileToFile(MultipartFile multiFile) { + try { + String fileName = multiFile.getOriginalFilename(); + if (fileName == null) { + return null; + } + String prefix = fileName.substring(0, fileName.lastIndexOf(".")); + String suffix = fileName.substring(fileName.lastIndexOf(".")); + File file = File.createTempFile(prefix, suffix); + multiFile.transferTo(file); + return file; + } catch (Exception e) { + return null; + } + } }