使用JMeter上传DICOM图片时提示“Not a DICOM Stream”问题求助
JMeter上传DICOM图片异常排查方案
还原加密逻辑
浏览器请求负载存在加密数据,说明DICOM文件上传前经过了加密处理:- 定位浏览器端加密逻辑:通过浏览器开发者工具的Sources面板,找到处理DICOM上传的JS代码,提取加密算法(如AES、RSA)、密钥、偏移量等核心参数。
- 在JMeter中模拟加密:添加
JSR223 PreProcessor,编写对应加密脚本——先读取本地DICOM文件内容,再按照浏览器的加密规则处理,最后将加密后的数据作为请求负载发送。
校验请求一致性
逐字段对比JMeter请求与浏览器请求,确保完全匹配:- 基础信息:请求方法、URL、HTTP版本
- 请求头:
Content-Type(DICOM对应application/dicom或根据实际情况调整)、Cookie、Authorization及所有自定义请求头 - 请求体:若为
multipart/form-data上传,检查HTTP Request的Files Upload配置,确认文件名、MIME类型、表单参数与浏览器一致;若为raw格式,确保加密后的负载内容和浏览器的加密数据完全相同
检查文件读取正确性
- 使用
__FileToString函数读取DICOM文件时,注意指定正确的编码(若加密前需二进制转字符串,需匹配浏览器的编码方式) - 若直接上传二进制文件,确保JMeter未对文件内容进行额外编码,可在
HTTP Request中勾选Use multipart/form-data并正确配置文件路径
- 使用
启用调试日志排查
修改jmeter.properties文件,设置log_level.jmeter.protocol.http=DEBUG,重启JMeter后运行脚本,查看日志中实际发送的请求详情,与浏览器Network面板的请求数据做对比,定位差异点
内容的提问来源于stack exchange,提问作者MAX GRIMM
相关产品推荐
相关产品推荐

