如何通过JMeter下载xlsx文件?解决.sheet后缀问题
解决JMeter下载xlsx文件后缀为.sheet的问题
方案1:直接指定Save Data to File监听器的完整文件名
- 打开Download 3对应的Save Data to File监听器
- 不要仅在
Filename prefix中填写路径,直接指定包含.xlsx后缀的完整文件名,例如:/Users/xxx/Downloads/test_file.xlsx - 若需批量下载不同文件,可结合变量动态生成文件名,比如:
/Users/xxx/Downloads/${file_unique_id}.xlsx,其中file_unique_id是你从接口响应中提取的唯一标识变量
方案2:用JSR223后置处理器手动控制文件保存
如果需要更灵活的命名逻辑,可在Download 3请求后添加JSR223 PostProcessor,通过代码手动保存文件:
// 获取接口响应的二进制数据 def responseBytes = ctx.getPreviousResult().getResponseData() // 定义保存路径和带.xlsx后缀的文件名 def savePath = "/Users/xxx/Downloads/result.xlsx" def targetFile = new File(savePath) // 写入文件 targetFile.write(responseBytes, "ISO-8859-1")
这种方式完全规避监听器自动生成错误后缀的问题。
方案3:从响应头提取原始文件名
部分下载接口会在响应头的Content-Disposition字段返回正确文件名(如attachment; filename="sample.xlsx"),可按以下步骤处理:
- 在Download 3请求上添加正则表达式提取器,提取规则设置为:
- 引用名称:
original_filename - 正则表达式:
filename="(.+?)" - 模板:
$1$
- 引用名称:
- 将提取到的变量代入Save Data to File监听器的
Filename prefix,例如:/Users/xxx/Downloads/${original_filename}
这样能保证下载的文件名和手动下载的完全一致,自动带上正确的.xlsx后缀。
内容的提问来源于stack exchange,提问作者Shankar PK
相关产品推荐
相关产品推荐

