共计 2345 个字符,预计需要花费 6 分钟才能阅读完成。
package com.xiaoan.utils; | |
import org.apache.commons.io.filefilter.SuffixFileFilter; | |
import org.springframework.web.multipart.MultipartFile; | |
import java.io.File; | |
import java.io.IOException; | |
import java.util.HashMap; | |
import java.util.Map; | |
import java.util.UUID; | |
/** | |
* @author 23105 | |
* @version 1.0 | |
* @description: 上传文件的工具类 | |
* @date 13/2/2023 下午 5:55 | |
*/ | |
public class UploadFile { | |
// 存储文件上传失败的错误信息 | |
private static Map<String, Object> error_result = new HashMap<>(); | |
// 存储头像的上传后果信息 | |
private static Map<String, Object> upload_result = new HashMap<>(); | |
/** | |
* @description: 效验所上传图片的大小及格局等信息... | |
* @param: photo | |
* @param: path | |
* @return: java.util.Map<java.lang.String, java.lang.Object> | |
*/ | |
private static Map<String, Object> uploadPhoto(MultipartFile photo, String path) {// 限度头像大小 (20M) | |
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 哟!"); | |
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", "禁止上传此类型文件! 请上传图片哟!"); | |
return error_result; | |
} | |
return null; | |
} | |
/** | |
* @description: (提取公共代码 : 进步代码的可重用性) 获取头像的上传后果信息 | |
* @param: photo | |
* @param: dirPaht | |
* @param: portraitPath | |
* @return: java.util.Map<java.lang.String, java.lang.Object> | |
*/ | |
public static Map<String, Object> getUploadResult(MultipartFile photo, String dirPaht, String portraitPath) {if (!photo.isEmpty() && photo.getSize() > 0) { | |
// 获取图片的原始名称 | |
String orginalName = photo.getOriginalFilename(); | |
// 上传图片,error_result: 存储头像上传失败的错误信息 | |
Map<String, Object> error_result = UploadFile.uploadPhoto(photo, dirPaht); | |
if (error_result != null) {return error_result;} | |
// 应用 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);// 将存储头像的我的项目门路返回给页面 | |
} catch (IOException e) {e.printStackTrace(); | |
upload_result.put("success", false); | |
upload_result.put("msg", "上传文件失败! 服务器端产生异样!"); | |
return upload_result; | |
} | |
} else {upload_result.put("success", false); | |
upload_result.put("msg", "头像上传失败! 未找到指定图片!"); | |
} | |
return upload_result; | |
} | |
} |
正文完