废话不多说,直接上代码
这个是公共方法,在需要上传的接口controller中调用即可
@PostMapping("/upload") public R upload(MultipartFile file) { // 校验文件大小、名字、后缀 CommentMethod.uploadVerify(file); 你的业务代码 }
package cn.fox.demo.common; import org.springframework.web.multipart.MultipartFile; import java.util.Arrays; import java.util.Locale; /** * 公共方法 */ public class CommentMethod { /** * 文件后缀 支持的类型 todo 自行舍取 */ private static final String[] FILE_SUFFIX_SUPPORT = {".xlsx", ".xls", ".doc", ".docx", ".txt", ".csv", ".jpg", ".jpeg", ".png"}; /** * 文件名字 需要排除的字符 todo 自行舍取 */ private static final String[] FILE_NAME_EXCLUDE = { "`", "!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "-", "=", "_", "+", "~", "·", "!", "¥", "……", "(", ")", "——", "?", ",", "<", ">", ":", ";", "[", "]", "{", "}", "/", "\\", "|", "?", ",", "。", "《", "》", ":", ";", "【", "】", "、", }; /** * 文件大小 10MB todo 自行更改 */ private static final long FILE_SIZE = 10 * 1024 * 1024; /** * 上传文件校验大小、名字、后缀 * @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("文件名字不能为空!"); } boolean nameFlag = false; for (String s : FILE_NAME_EXCLUDE) { if (originalFilename.contains(s)) { nameFlag = true; break; } } if(nameFlag){ throw new RuntimeException("文件名字不允许出现"+ Arrays.toString(FILE_NAME_EXCLUDE) +"关键字!"); } // 校验文件后缀 if (!originalFilename.contains(".")) { throw new RuntimeException("文件不能没有后缀!"); } String suffix = originalFilename.substring(originalFilename.lastIndexOf('.')); boolean flag = true; for (String s : FILE_SUFFIX_SUPPORT) { if (s.equals(suffix.toLowerCase(Locale.ROOT))) { flag = false; break; } } if(flag){ throw new RuntimeException("文件格式仅限于"+ Arrays.toString(FILE_SUFFIX_SUPPORT) +"!"); } } }
————————————————
版权声明:本文为CSDN博主「菜鸟fox」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lh155136/article/details/126585728