From 60aa90e4a199c6dd29e6ef158e032a6425926822 Mon Sep 17 00:00:00 2001 From: pveayojnc <3273195329@qq.com> Date: Tue, 29 Apr 2025 18:20:20 +0800 Subject: [PATCH] Update UploadFile.java --- src/main/java/com/zsz/util/UploadFile.java | 55 ++++++++++++---------- 1 file changed, 31 insertions(+), 24 deletions(-) diff --git a/src/main/java/com/zsz/util/UploadFile.java b/src/main/java/com/zsz/util/UploadFile.java index 2692dd1..0cf2fe9 100644 --- a/src/main/java/com/zsz/util/UploadFile.java +++ b/src/main/java/com/zsz/util/UploadFile.java @@ -11,40 +11,43 @@ import java.util.UUID; /** * @project: zhxy - * @description: 上传文件的工具类 + * @description: 上传文件的工具类,主要用于处理图片文件的上传操作, + * 包括校验文件大小、格式,以及保存文件到指定路径等功能。 */ public class UploadFile { - //存储文件上传失败的错误信息 + // 存储文件上传失败的错误信息的 Map 对象 private static Map error_result = new HashMap<>(); - //存储头像的上传结果信息 + // 存储头像的上传结果信息的 Map 对象 private static Map upload_result = new HashMap<>(); /** - * @description: 效验所上传图片的大小及格式等信息... - * @param: photo - * @param: path - * @return: java.util.Map + * 校验所上传图片的大小及格式等信息 + * @param photo 要上传的 MultipartFile 类型的图片文件 + * @param path 图片要保存到的路径 + * @return 如果校验失败,返回包含错误信息的 Map;如果校验成功,返回 null */ private static Map uploadPhoto(MultipartFile photo, String path) { - //限制头像大小(20M) + // 限制头像大小为 20M(20 * 1024 * 1024 字节) int MAX_SIZE = 20971520; - //获取图片的原始名称 + // 获取图片的原始名称 String orginalName = photo.getOriginalFilename(); - //如果保存文件的路径不存在,则创建该目录 + // 如果保存文件的路径不存在,则创建该目录 File filePath = new File(path); if (!filePath.exists()) { filePath.mkdirs(); } - //限制上传文件的大小 + // 限制上传文件的大小,如果文件大小超过限制,则设置错误信息并返回 if (photo.getSize() > MAX_SIZE) { error_result.put("success", false); - error_result.put("msg", "上传的图片大小不能超过20M哟!"); + error_result.put("msg", "上传的图片大小不能超过 20M 哟!"); return error_result; } - // 限制上传的文件类型 + // 限制上传的文件类型,定义允许的文件后缀数组 String[] suffixs = new String[]{".png", ".PNG", ".jpg", ".JPG", ".jpeg", ".JPEG", ".gif", ".GIF", ".bmp", ".BMP"}; + // 创建后缀文件过滤器 SuffixFileFilter suffixFileFilter = new SuffixFileFilter(suffixs); + // 检查文件类型是否符合要求,如果不符合,则设置错误信息并返回 if (!suffixFileFilter.accept(new File(path + orginalName))) { error_result.put("success", false); error_result.put("msg", "禁止上传此类型文件! 请上传图片哟!"); @@ -55,30 +58,33 @@ public class UploadFile { } /** - * @description: (提取公共代码 : 提高代码的可重用性)获取头像的上传结果信息 - * @param: photo - * @param: dirPaht - * @param: portraitPath - * @return: java.util.Map + * 提取公共代码,获取头像的上传结果信息 + * @param photo 要上传的 MultipartFile 类型的图片文件 + * @param dirPaht 图片要保存到的目录路径 + * @param portraitPath 头像在项目中的路径前缀 + * @return 包含上传结果信息的 Map,如上传是否成功、错误信息、头像路径等 */ public static Map getUploadResult(MultipartFile photo, String dirPaht, String portraitPath) { + // 检查文件是否为空且大小大于 0 if (!photo.isEmpty() && photo.getSize() > 0) { - //获取图片的原始名称 + // 获取图片的原始名称 String orginalName = photo.getOriginalFilename(); - //上传图片,error_result:存储头像上传失败的错误信息 + // 上传图片并获取错误信息(如果有) Map error_result = UploadFile.uploadPhoto(photo, dirPaht); if (error_result != null) { return error_result; } - //使用UUID重命名图片名称(uuid__原始图片名称) + // 使用 UUID 重命名图片名称(uuid__原始图片名称) String newPhotoName = UUID.randomUUID() + "__" + orginalName; - //将上传的文件保存到目标目录下 + // 将上传的文件保存到目标目录下 try { photo.transferTo(new File(dirPaht + newPhotoName)); + // 设置上传成功的信息,并将头像在项目中的完整路径返回 upload_result.put("success", true); - upload_result.put("portrait_path", portraitPath + newPhotoName);//将存储头像的项目路径返回给页面 + upload_result.put("portrait_path", portraitPath + newPhotoName); } catch (IOException e) { + // 处理上传失败的情况,设置错误信息 e.printStackTrace(); upload_result.put("success", false); upload_result.put("msg", "上传文件失败! 服务器端发生异常!"); @@ -86,9 +92,10 @@ public class UploadFile { } } else { + // 文件为空或大小为 0 时,设置上传失败的信息 upload_result.put("success", false); upload_result.put("msg", "头像上传失败! 未找到指定图片!"); } return upload_result; } -} +} \ No newline at end of file