目录
1. 创建上传文件的统一校验类
包含功能:
-> 1. 多文件上传校验
-> 2. 文件名字校验(特殊符号)
-> 3. 文件后缀校验
2. 使用方式
建议: 在文件上传开始的位置添加
-> 两个重载方法, 单文件 多文件都支持
-> 示例: 直接可以用, 任意位置
3. 注意: 如果出现红色部分 删除即可, 业务代码
1. 创建上传文件的统一校验类
包含功能:
-> 1. 多文件上传校验
-> 2. 文件名字校验(特殊符号)
-> 3. 文件后缀校验
package *;
import *;
import *;
import org.springframework.web.multipart.MultipartFile;
import java.util.Arrays;
import java.util.Locale;
/**
* @author pzy
* @version 3.1.0 大版本更新
* 文件上传校验的公共方法
* 严格校验
*/
public class UploadCheckUtils {
/**
* 文件大小 10MB(可用于图片和视频区分)
*/
private static final long FILE_SIZE = 10 * 1024 * 1024;
/**
* 只支持图片格式
*/
public static final String[] YES_IMAGE_SUPPORT = {".jpg", ".jpeg", ".png"};
/**
* 只支持视频格式
*/
public static final String[] YES_VIDEO_SUPPORT = {".mp4", ".avi", ".mp3"};
/**
* 只支持音频格式
*/
public static final String[] YES_AUDIO_SUPPORT = {".mp3"};
/**
* 只支持文件格式
*/
public static final String[] YES_FILE_SUPPORT = {".xlsx", ".xls", ".doc", ".docx", ".txt", ".csv"};
/**
* 全部文件(普通文件,图片, 视频,音频)后缀 支持的类型
*/
private static final String[] FILE_SUFFIX_SUPPORT = {".xlsx", ".xls", ".doc", ".docx", ".txt", ".csv",
".jpg", ".jpeg", ".png", ".mp4", ".avi", ".mp3"};
/**
* 文件名字 需要排除的字符
* 废弃: "(", ")","",".", "——", "_","-"
*/
private static final String[] FILE_NAME_EXCLUDE = {
"`", "!", "@", "#", "$", "%", "^", "&", "*" , "=", "+",
"~", "·", "!", "¥", "……", "(", ")",
"?", ",", "<", ">", ":", ";", "[", "]", "{", "}", "/", "\\", "|",
"?", ",", "。", "《", "》", ":", ";", "【", "】", "、"
};
/**
* 多文件上传
*
* @param multipartFile
*/
public static void uploadVerify(MultipartFile[] multipartFile) {
/*校验1: 没有文件时,报错提示*/
if (multipartFile == null) {
throw new ThirdServiceException(ResponseEnum.T160000, "上传文件不能为空");
}
/*校验2: 上传文件的长度小于等于1 就一个直接校验*/
if (multipartFile.length <= 1) {
uploadVerify(multipartFile[0]);
return;
}
/*校验3: 多个文件直接校验*/
for (MultipartFile uploadFile : multipartFile) {
uploadVerify(uploadFile);
}
}
/**
* 上传文件校验大小、名字、后缀
*
* @param multipartFile multipartFile
*/
public static void uploadVerify(MultipartFile multipartFile) {
// 校验文件是否为空
if (multipartFile == null) {
throw new RuntimeException("文件不能为空!");
}
// // 校验文件大小(统一校验),配置文件中添加
// long size = multipartFile.getSize();
// if(size > FILE_SIZE){
// throw new RuntimeException("文件大小不能超过10MB!");
// }
// 校验文件名字
String originalFilename = multipartFile.getOriginalFilename();
if (originalFilename == null) {
throw new RuntimeException("文件名字不能为空!");
}
for (String realKey : FILE_NAME_EXCLUDE) {
if (originalFilename.contains(realKey)) {
throw new RuntimeException("文件名字不允许出现' " + realKey + " ' 关键字!");
}
}
// 校验文件后缀
if (!originalFilename.contains(".")) {
throw new RuntimeException("文件不能没有后缀!");
}
String suffix = originalFilename.substring(originalFilename.lastIndexOf('.'));
// for (String realFormat : FILE_SUFFIX_SUPPORT) {
/*校验: 文件格式是否符合要求*/
if (!Arrays.asList(FILE_SUFFIX_SUPPORT).contains(suffix.toLowerCase(Locale.ROOT))) {
//throw new RuntimeException("文件格式' " + realFormat + " '不支持,请更换后重试!");
throw new RuntimeException("文件格式不支持,请更换后重试!");
}
// }
}
}
2. 使用方式
建议: 在文件上传开始的位置添加