jmeter上传图片接口+下载文件接口
JMeter上传图片到服务器
通过Fiddler捕捉到的请求如下,该请求中请求头中有token,请求体中只有一个name=file的参数
JMeter中新建Http请求,如下图,勾选KeepAlive和对POST使用multipart/form-data,token在请求头中,故在HTTP请求中将token放在Http请求头中,请求体参数只要填写file即可,上图中捕获到的参数name=file,所以在文件上传这里参数名称要填name对应的值,此处是file,否则会报错(见本文下方),MIME类型是捕获到的Content-Type的值,此处是image/jpeg,文件名称只需要从本地选择图片即可
对请求头中的token参数进行处理,如下图
请求写好后执行,执行结果如下则表示上传成功
遇到的问题:
当参数名称和name的值不对应时,如下图,执行请求会提示:{"code":4702,"message":"Required request part 'file' is not present","timestamp":1611286744418,"extra":null}
解决方式:只要将上传文件中的参数名称改成file即可
JMeter下载文件到本地
1.编写下载请求信息(路径+参数)
2.设置请求头信息
3.执行请求后,请求返回了文件信息,如下图,此处只是把数据从数据库中下载到服务器
4.使用正则表达式获取返回信息头中的filename
这里的表达式要写更全,如果只写成filename=(.*)则会获取不到,导致最后保存的文件名称变成${filename}
5.把数据从应用服务器保存到本地,在请求下新增一个BeanShell 后置处理程序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | //备注:BeanShell PostProcessor中代码如下: //JMeter的内置API:prev.getResponseData()获取请求的响应内容 byte [] responseData = prev.getResponseData(); //①仅以文件名作为filepath的值,则导出的文件会默认保存在Jmeter安装路径的bin(即JVM的启动路径); //private String filePath = "${ExportExcelName}"; //②指定绝对路径 private String filePath = "C:/Users/admin/Downloads/${filename}.xlsx" ; //正则表达式提取时的引用名称 BufferedOutputStream bos = null ; FileOutputStream fos = null ; File file = null ; try { File file = new File(filePath); fos = new FileOutputStream(file); //不添加参数true,以非追加的方式添加内容 bos = new BufferedOutputStream(fos); bos.write(responseData); } catch (Exception e) { e.printStackTrace(); } finally { if (bos != null ) { try { bos.close(); } catch (IOException e1) { e1.printStackTrace(); } } if (fos != null ) { try { fos.close(); } catch (IOException e1) { e1.printStackTrace(); } } } |
注:上面代码只需要改动存放文件的位置即可
最终的接口请求结构如下图:
6.执行上面的请求,查看结果树中返回正确的文档数据
在BeanShell的文件保存路径下查看保存的文件,
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统