上周群里有位同学,问我用jmeter怎么上传文件?因好久没用jmeter了,顺便自己也复习下,现整理出来和大家分享

一、准备工作:

  • 上传接口一个(自行开发解决了)
  • 下载接口
  • ps:没有困难创造困难也要上
  • jmeter4.0版本

上传接口源码

/**
* 文件上传
*/
@RequestMapping(value = "/fileUpload", method = RequestMethod.POST)
@ApiOperation(value = "上传文件", httpMethod = "POST")
@ResponseBody
public String fileUpload(@RequestParam(value = "file", required = false) MultipartFile file) {
if (Objects.isNull(file)) {
return getMessage("90110", "上传文件不能为空!");
}
String fileName = file.getOriginalFilename();
String path = "F:/upload";
File dest = new File(path + "/" + fileName);
if (!dest.getParentFile().exists()) { //判断文件父目录是否存在
dest.getParentFile().mkdir();
}
try {
//保存文件
file.transferTo(dest);
return getMessage("90000", "上传文件成功!");
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
return getMessage("90555", "上传文件失败!");
} catch (IOException e) {
return getMessage("90555", "上传文件失败!");
}
}

二、jmeter做上传的脚本

2.1、编写脚本流程

首先添加一个线程组,然后在线程组里面添加一个http请求,因为是发送数据,所有是post请求,写好上传的地址,然后写好文件路径
1、添加线程组:右键测试计划,添加-Threads(Users)-线程组;
2、添加一个http请求:右键线程组,添加-Sampler-HTTP请求;
3、写好http请求中的url和路径,以及要上传的文件
4、添加一个查看结果树,查看接口调用结果。右键线程组,添加-监听器-查看结果树;

2.2、脚本实例

协议:http
服务器名称:127.0.0.1
端口号:8888
请求类型:post
路径:/fileUpload
body:要选files_upload这个tab页,写文件路径,和参数名

下面是脚本截图:

2.3、运行脚本,查看结果

看下面的图,运行结果,接口返回成功,再去我本地F盘(接口里写死的)下是否有文件,看一下,到底有没有成功。

看下面的图,对应目录下已经有咱们刚才上传的文件了,及时间也对得上

------------------------------------------------------------------------------------------------------------分割线---------------------------------------------------------------------------------------------------------------------------

可能遇到的坑:

ps:此处为代码开发部分,感兴趣的同学可以了解下及解决方案参考

问题一:关于报错:

Request”,”exception”:”org.springframework.web.multipart.support.MissingServletRequestPartException”,”message”:”Required request part ‘file’ is not present”,”path”:”/excel/import/upload”}
---------------------
我错误的原因和解决方法:

主要是由于前台传递mutipartFile,表单的名字是file,但是再feign调用的时候我使用的是requestPart(“file”). 因此无法传递。
修改前端表单的文件名为file

问题二:

400 bad request: Required request part ‘file’ is not present

猜测通过@RequestParam(value = “file”, required = false)这种方式来取参的话,file字段就是可选的了。

这个错误大概是说没有file这个字段,而这个字段又是必须的,即使用了注释,如下面

@RequestParam("file") MultipartFile file

那么就需要我们去检查下前端页面是否存在这个字段了

问题三:

org.apache.tomcat.util.http.fileupload.FileUploadException: the request was rejected because no multipart boundary was found

不手动添加content-type后就行了:此时访问成功,去掉消息头多余的添加

------------------------------------------------------------------------------------------------------------分割线---------------------------------------------------------------------------------------------------------------------------

三、jmeter下载文件。

3.1准备工作:

图片的url是:http://a.hiphotos.baidu.com/image/pic/item/4b90f603738da977b1e8c6c7ba51f8198718e313.jpg

3.2编写脚本流程

首先添加一个线程组,然后在线程组里面添加一个http请求,因为是获取数据,所有是get请求,写好下载的地址

1、添加线程组:右键测试计划,添加-Threads(Users)-线程组;
2、添加一个http请求:右键线程组,添加-Sampler-HTTP请求;
3、写好http请求中的url和路径;
4、添加beanshell,获取到返回的文件内容,保存到一个文件里面。右键线程组,添加-Sampler-BeanShellSampler,beanshell代码如下:

import java.io.*;
//这个是获取到请求返回的数据,prev是获取上个请求的返回
byte[]result=prev.getResponseData();
//代表存放文件的位置和文件名
String file_name="C:\\Users\\admin\\Desktop\\BaiDu.jpg";
File file=new File(file_name);
FileOutputStream out=new FileOutputStream(file);
out.write(result);
out.close();

5、添加一个查看结果树,查看接口调用结果。右键线程组,添加-监听器-查看结果树;

3.3 脚本实例

协议:http
服务器名称:a.hiphotos.baidu.com
端口号:80 (提示,端口号默认是就是80,可以不用写哦)
请求类型:get
路径:/image/pic/item/4b90f603738da977b1e8c6c7ba51f8198718e313.jpg
脚本截图如下

 

下面这个是beanshell里面的内容,也就是咱们保存文件的操作。

3.4 运行脚本,查看结果

 看下面的图,运行结果,已经可以看到刚才这张图片了,而且请求都是成功的。

  咱们再去桌面上看,文件已经存在F盘根目录下了

以上就是利用jmeter实现上传下载操作啦,感兴趣的同学可以自己动动手练习下

Jmeter之模拟文件上传、下载接口操作的更多相关文章

  1. Python接口自动化——文件上传/下载接口

    〇.前言 文件上传/下载接口与普通接口类似,但是有细微的区别. 如果需要发送文件到服务器,例如:上传文档.图片.视频等,就需要发送二进制数据,上传文件一般使用的都是 Content-Type: mul ...

  2. 性能测试七:jmeter进阶之文件上传下载、定时器

    一.上传下载 上传: 1,POST请求,勾选 use …for post 2,同请求一起发送文件里,填写文件名称,参数名称 3,MIME类型: application/octet-stream(非必须 ...

  3. java操作FTP,实现文件上传下载删除操作

    上传文件到FTP服务器: /** * Description: 向FTP服务器上传文件 * @param url FTP服务器hostname * @param port FTP服务器端口,如果默认端 ...

  4. .Net Core 图片文件上传下载

    当下.Net Core项目可是如雨后春笋一般发展起来,作为.Net大军中的一员,我热忱地拥抱了.Net Core并且积极使用其进行业务的开发,我们先介绍下.Net Core项目下实现文件上传下载接口. ...

  5. jm解决乱码问题-参数化-数据库操作-文件上传下载

    jm解决乱码问题-参数化-数据库操作-文件上传下载 如果JM出果运行结果是乱码(解决中文BODY乱码的问题) 找到JM的安装路径,例如:C:\apache-jmeter-3.1\bin 用UE打开jm ...

  6. Spring Boot 教程 - 文件上传下载

    在日常的开发工作中,基本上每个项目都会有各种文件的上传和下载,大多数文件都是excel文件,操作excel的JavaAPI我用的是apache的POI进行操作的,POI我之后会专门讲到.此次我们不讲如 ...

  7. Android okHttp网络请求之文件上传下载

    前言: 前面介绍了基于okHttp的get.post基本使用(http://www.cnblogs.com/whoislcj/p/5526431.html),今天来实现一下基于okHttp的文件上传. ...

  8. salesforce 零基础学习(四十二)简单文件上传下载

    项目中,常常需要用到文件的上传和下载,上传和下载功能实际上是对Document对象进行insert和查询操作.本篇演示简单的文件上传和下载,理论上文件上传后应该将ID作为操作表的字段存储,这里只演示文 ...

  9. Retrofit2文件上传下载及其进度显示

    序 前面一篇文章介绍了Retrofit2的基本使用,这篇文章接着介绍使用Retrofit2实现文件上传和文件下载,以及上传下载过程中如何实现进度的显示. 文件上传 定义接口 1 2 3 @Multip ...

随机推荐

  1. 混合app开发--js和webview之间的交互总结

    使用场景:原生APP内嵌套H5页面,app使用的是webview框架进行嵌套 这样就存在两种情况 1.原生app调用H5的方法 2.H5调用app的方法 分别讲解下,其实app与H5之间的交互式非常简 ...

  2. 明白生产环境中的jvm参数

    明白生产环境中的jvm参数 写代码的时候,程序写完了,发到线上去运行,跑一段时间后,程序变慢了,cpu负载高了--一堆问题出来了,所以了解一下生产环境的机器上的jvm配置是有必要的.比如说: JDK版 ...

  3. 使用 Topshelf 结合 Quartz.NET 创建 Windows 服务

    Ø  前言 之前一篇文章已经介绍了,如何使用 Topshelf 创建 Windows 服务.当时提到还缺少一个任务调度框架,就是 Quartz.NET.而本文就展开对 Quartz.NET 的研究,以 ...

  4. springboot11-security02FromDB 权限管理(用户信息和角色信息保存在数据库)

    <h4>场景</h4> <h4>代码</h4> springboot+springsecurity+mysql(jpa)实现: 1.pom依赖: < ...

  5. JS算法练习三

    JS算法练习 1.生成一个长度为10的随机数组,使用冒泡法给数组排序 var arr=new Array(10); for (var i = 0; i <arr.length ; i++) { ...

  6. Linux 常用命令(2)

    wc命令:用于对文件的行数.单词数和字符数进行统计. wc -w file.txt,显示文件中的单词数,wc -l file.txt,显示文件中的行数,wc -m file.txt,显示文件中的字符数 ...

  7. luogu P4173 残缺的字符串

    传送门 两种做法,一种是依次考虑每种字符,然后如果某个位置是该字符或者是\(*\)对应的值就是1,否则是0,然后把第一个串倒过来,fft卷积起来,最后看对应位置的值是否为m 然而上面那个做法在字符集大 ...

  8. 解决shell脚本中 telnet ap自动输入用户名和密码以及回车符

    #!/bin/bash function change_ap { ( s=`stty -g`; str=$"\n" sstr=$(echo -e $str) stty raw -e ...

  9. shell实现带颜色输出的进度条

    1.基础版 #!/bin/bash b='' ;$i<=;i+=)) do printf "执行进度 :[%-50s]%d%%\r" $b $i sleep 0.001 b= ...

  10. Javascript入门(一)弹出方框

    今天要javascript做一个用网页弹出框框的效果,虽然没什么卵用. 效果如图,弹出一个“hello world”的框框. 1. 新建一个html 页面, 如图: <!DOCTYPE html ...