一、JMeter上传文件
1、使用F12或抓包工具抓包对应接口
如下图为一个上传图片接口,抓包显示内容如下:
JMeter上传文件,并修改源码参数化Content-Disposition 的 filename

 JMeter上传文件,并修改源码参数化Content-Disposition 的 filename

JMeter上传文件,并修改源码参数化Content-Disposition 的 filename
JMeter上传文件,并修改源码参数化Content-Disposition 的 filename
2、将抓包到的信息头内容填写到jmeter的HTTP信息头管理器
JMeter上传文件,并修改源码参数化Content-Disposition 的 filename

3、填写参数

由抓包的接口信息可了解到此上传文件接口为一个post接口,使用的Content-Type为multipart/form-data,将非上传文件的参数全部填写到HTTP请求的参数中,并勾选对POST使用multipart/form-data
JMeter上传文件,并修改源码参数化Content-Disposition 的 filename
4、切换到文件上传页面,填写上传文件参数
(1)选择要上传的文件的文件路径;
(2)将抓包到的上传文件参数的name填写到参数名称一项,Content-Disposition填写到MIME类型
JMeter上传文件,并修改源码参数化Content-Disposition 的 filename
JMeter上传文件,并修改源码参数化Content-Disposition 的 filename

  5、切换到高级页面,客户端实现方法选择Java

JMeter上传文件,并修改源码参数化Content-Disposition 的 filename

 

JMeter上传文件,并修改源码参数化Content-Disposition 的 filename
到这一步,大部分上传文件类接口执行后可发现结果正确,如上传正常,则不需要再看下面部分了。
 
二、修改源码参数化Content-Disposition的filename
查看抓包信息,可发现此接口固定了filename的值为blob,而不是默认文件名称。JMeter上传文件参数的filename只能默认文件名称,导致上传失败。
JMeter上传文件,并修改源码参数化Content-Disposition 的 filename
JMeter上传文件,并修改源码参数化Content-Disposition 的 filename
尝试将filename的值添加到信息头管理器或者参数均发现不可行。查找百度后发现此链接https://blog.csdn.net/defonds/article/details/41593253(参数化上传文件时的filename)可解决此问题。
以下为我在应用时的操作步骤:
1、使用jd-gui打开ApacheJMeter_http.jar
ApacheJMeter_http.jar文件路径:apache-jmeter-5.1.1\lib\ext
JMeter上传文件,并修改源码参数化Content-Disposition 的 filename
2、确认代码存在
找到ApacheJMeter_http.jar的PostWriter.java的writeStartFileMultipart,确认有此部分代码
JMeter上传文件,并修改源码参数化Content-Disposition 的 filename

 3、使用jd-gui反编译jar包

jd-gui点击file-Save All Sources,将整个ApacheJMeter_http.jar文件另存为压缩包

JMeter上传文件,并修改源码参数化Content-Disposition 的 filename

 JMeter上传文件,并修改源码参数化Content-Disposition 的 filename

4、解压压缩包,找到对应文件
解压压缩包,得到ApacheJMeter_http.jar.src文件夹,找到PostWriter.java文件,使用编辑器,如vscode打开,找到writeStartFileMultipart
 JMeter上传文件,并修改源码参数化Content-Disposition 的 filename

 

 5、修改源码

将write(out, (new File(filename)).getName());注释掉,添加一句write(out, nameField);,保存文件
 JMeter上传文件,并修改源码参数化Content-Disposition 的 filename

 

 6、重新编译jar包,生成ApacheJMeter_http.jar

cmd切换到ApacheJMeter_http.jar.src文件下,执行jar -cvf ApacheJMeter_http.jar *,重新打包生成ApacheJMeter_http.jar
 JMeter上传文件,并修改源码参数化Content-Disposition 的 filename

 JMeter上传文件,并修改源码参数化Content-Disposition 的 filename

 

 7、替换ApacheJMeter_http.jar文件,并修改jmeter信息头

将ApacheJMeter_http.jar复制到apache-jmeter-5.1.1\lib\ext下替换原文件(记得备份原文件哦),重新打开jmeter,HTTP信息头管理器里的Content-Type值添加指定的filename,重新执行则可执行成功
 JMeter上传文件,并修改源码参数化Content-Disposition 的 filename

 JMeter上传文件,并修改源码参数化Content-Disposition 的 filename

 JMeter上传文件,并修改源码参数化Content-Disposition 的 filename

如上图,已可执行成功,至此修改源码参数化Content-Disposition的filename使上传文件接口调通已完成。

相关文章:

猜你喜欢
  • 2021-04-25
  • 2021-10-20
  • 2022-01-20
  • 2022-12-23
  • 2022-12-23
  • 2022-01-22
  • 2021-06-13
相关资源
相似解决方案