SimpleEvaluationContext弃用StandardEvaluationContext 这个可以直接替换
白名单: 可以这样添加
首先添加 : 
package com.jeelowcode.tool.framework.common.util.io;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.io.file.FileNameUtil;
import cn.hutool.core.util.StrUtil;
import java.util.Collection;
import java.util.List;
import java.util.Locale;
import static com.jeelowcode.tool.framework.common.exception.enums.GlobalErrorCodeConstants.FILE_TYPE_NOT_ALLOWED;
import static com.jeelowcode.tool.framework.common.exception.util.ServiceExceptionUtil.exception;
/**
* 上传文件安全校验工具类
* <p>
* 采用「后缀白名单」机制,由 jeelowcode.security.file-whitelist.enable 开关控制:
*
* @author mashu
*/
public class FileUploadSecurityUtils {
private FileUploadSecurityUtils() {
}
/**
* 校验文件后缀是否允许上传
*
* @param fileName 文件名或文件路径(可包含查询串,如 a.jpg?x=1)
* @param enable 是否开启后缀白名单校验(开关)
* @param allowExtensions 允许上传的后缀白名单,例如 jpg、png、pdf
*/
public static void checkFileExtension(String fileName, boolean enable, List<String> allowExtensions) {
// 未开启白名单校验,则直接放行
if (!enable) {
return;
}
// 文件名为空时无法校验,此处放行,交由后续逻辑兜底(例如用 path 填充 name)
if (StrUtil.isBlank(fileName)) {
return;
}
// 去掉查询串与锚点,仅保留文件主体
String extName = FileNameUtil.extName(removeQueryString(fileName));
// 无后缀文件无法确认安全性,直接拒绝
if (StrUtil.isBlank(extName)) {
throw exception(FILE_TYPE_NOT_ALLOWED);
}
if (!containsExtension(allowExtensions, extName)) {
throw exception(FILE_TYPE_NOT_ALLOWED);
}
}
/**
* 去掉查询串(?)与锚点(#),仅保留文件主体
*/
private static String removeQueryString(String fileName) {
int cut = fileName.indexOf('?');
int anchor = fileName.indexOf('#');
if (anchor >= 0 && (cut < 0 || anchor < cut)) {
cut = anchor;
}
return cut > 0 ? fileName.substring(0, cut) : fileName;
}
/**
* 判断后缀是否在白名单内(忽略大小写,兼容配置为 .jpg 的写法)
*/
private static boolean containsExtension(Collection<String> allowExtensions, String extName) {
// 白名单为空时,视为全部拒绝
if (CollUtil.isEmpty(allowExtensions)) {
return false;
}
String ext = extName.toLowerCase(Locale.ROOT);
return allowExtensions.stream()
.filter(StrUtil::isNotBlank)
.anyMatch(item -> StrUtil.equalsIgnoreCase(StrUtil.removePrefix(item.trim(), "."), ext));
}
}
在上传文件的方法 添加 :

之后,添加 按钮和配置 :

在配置文件中,配置可上传的白名单

最好sql可以引入正则校验