如何在JMeter中将上传图片转为Base64并通过HTTP Body发送至IM系统接口?
在JMeter中实现图片转Base64并调用更新API的方案
1. 准备测试图片
- 把要测试的图片放到JMeter的
bin目录,或者记下完整文件路径,方便后续调用。
2. 生成图片Base64编码
- 在图片更新API的HTTP请求节点下,添加JSR223 PreProcessor
- 语言选
Groovy(性能最优),粘贴以下代码:
import java.nio.file.Files import java.nio.file.Paths import java.util.Base64 // 替换成你的图片路径,比如"E:/test.jpg"或者"test.jpg"(放bin目录时) def imagePath = "test.jpg" def imageBytes = Files.readAllBytes(Paths.get(imagePath)) def base64String = Base64.getEncoder().encodeToString(imageBytes) // 把Base64字符串存到JMeter变量里,后面请求体直接用 vars.put("imageBase64", base64String)
3. 配置更新API的POST请求体
- 假设接口用JSON格式传参(根据实际接口调整),请求体示例:
{ "draftId": "${draftId}", // 这里用草稿创建API返回的ID,需要提前提取 "imageData": "${imageBase64}" }
- 如果是表单提交,直接在表单参数里加
imageData字段,值填${imageBase64}
4. 提取草稿创建API的draftId
- 在图片草稿创建API的HTTP请求下,加JSON Extractor(返回是JSON的情况)
- 配置项:
- 引用名称:
draftId - JSON Path表达式:
$.draftId(替换成实际返回的draftId所在路径) - 匹配数字:
1(取第一个结果)
- 引用名称:
5. 验证上传结果
- 添加响应断言,检查返回状态码(比如200)或响应内容里的成功标识,确认图片是否上传成功。
内容的提问来源于stack exchange,提问作者Fluke
相关产品推荐
相关产品推荐

