You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JMeter随机文件上传后JSR223获取上传文件名报错如何解决

报错根因

你遇到的语法报错核心原因是:JSR223 元件使用 Groovy 引擎时,不支持直接用 ${变量名} 格式引用 JMeter 变量。你存储的是 Windows 路径,路径中的反斜杠 \ 会被 Groovy 识别为转义字符,直接破坏代码语法结构,因此抛出编译异常。


解决方法

方法1:无需修改预处理器,直接调整后置处理器代码

直接通过 vars.get() 方法获取变量,再提取文件名即可,代码如下:

// 正确获取JMeter存储的全路径变量
def fullFilePath = vars.get("CURRENT_FILE")
// 从全路径中解析得到纯文件名
def uploadFileName = new File(fullFilePath).getName()
// 打印日志
log.info("File Uploaded Is : {}", uploadFileName)
// 若需要将文件名存为JMeter变量供其他元件调用,可添加下行
vars.put("UPLOAD_FILE_NAME", uploadFileName)

方法2:预处理器阶段提前存储文件名(性能更优)

如果后续多个元件都需要用到纯文件名,可以直接修改 Beanshell 预处理器代码,一次性存储全路径和文件名两个变量:

// 注意Windows路径反斜杠需要转义,写为\\
File folder = new File("C:\\User\\SYSTEMTESTING\\SAMPLENEWFILES\\REUPLOADFILES");
File[] fileForUpload = folder.listFiles();
Random rnd = new Random();
File selectedFile = fileForUpload[rnd.nextInt(fileForUpload.length)];
// 存储全路径供上传请求使用
vars.put("CURRENT_FILE", selectedFile.getAbsolutePath());
// 直接存储纯文件名,后续无需重复解析
vars.put("CURRENT_FILE_NAME", selectedFile.getName());

后续在 JSR223 后置处理器中直接调用即可:

log.info("File Uploaded Is : {}", vars.get("CURRENT_FILE_NAME"))

注意:你请求体中看到的 filename 属性值和本地选中文件的文件名完全一致,以上两种方法获取的文件名和请求中实际上传的文件名完全匹配。


内容的提问来源于stack exchange,提问作者user16923013

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 06:00:00