文件后缀名限定
String edward = FileUploadUtils.getExtension(file).toLowerCase();
//限定文件类型
String[] args = {"png", "gif", "jpeg", "jpg"};
Arrays.sort(args);
//包含的话是整数 不包含的话是负数
int result = Arrays.binarySearch(args, edward);
//判断文件格式
if (result < 0) {
throw new BadRequestException("上传的文件格式不支持,请重新选择!");
}
文件大小限定
//判断文件大小 不大于5M
if(!FileUploadUtils.fileSize(file.getSize(),5,"M")){
throw new BadRequestException("出错了!请上传png、gif、JPEG等格式,大小不超过5M的图片!");
}
实现工具类
/**
* 文件上传工具类
*
* @author modianbai
*/
public class FileUploadUtils {
/**
* 默认大小 50M
*/
public static final long DEFAULT_MAX_SIZE = 50 * 1024 * 1024;
/**
* 默认的文件名最大长度 100
*/
public static final int DEFAULT_FILE_NAME_LENGTH = 100;
/**
* 获取文件名的后缀
*
* @param file 表单文件
* @return 后缀名
*/
public static final String getExtension(MultipartFile file) {
String extension = FilenameUtils.getExtension(file.getOriginalFilename());
if (StringUtils.isEmpty(extension)) {
extension = MimeTypeUtils.getExtension(file.getContentType());
}
return extension;
}
/**
* 判断文件大小
* @param len
* 文件长度
* @param size
* 限制大小
* @param unit
* 限制单位(B,K,M,G)
* @return
*/
public static boolean fileSize(Long len, int size, String unit){
double fileSize = 0;
if ("B".equalsIgnoreCase(unit)) {
fileSize = (double) len;
} else if ("K".equalsIgnoreCase(unit)) {
fileSize = (double) len / 1024;
} else if ("M".equalsIgnoreCase(unit)) {
fileSize = (double) len / 1048576;
} else if ("G".equalsIgnoreCase(unit)) {
fileSize = (double) len / 1073741824;
}
return !(fileSize > size);
}
}