最近很多同学都在问jmeter上传,下载文件的脚本怎么做?
正巧这阵子忙完有时间,就来“折腾”一番,哈哈
现整理出来和大家分享
到底该怎么做?
一、准备工作:
上传接口一个(自行开发解决了)
下载接口
ps:没有困难创造困难也要上
jmeter4.0版本
上传接口源码
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
/**
* 文件上传
*/
@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:此处为代码开发部分,感兴趣的同学可以了解下及解决方案参考
问题一:关于报错:
1
2
3
4
5
6
|
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
|
问题二:关于报错
1
2
3
4
5
6
7
8
9
|
400 bad request: Required request part ‘file’
is
not present
猜测通过@RequestParam(value = “file”, required =
false
)这种方式来取参的话,file字段就是可选的了。
这个错误大概是说没有file这个字段,而这个字段又是必须的,即使用了注释,如下面
@RequestParam(
"file"
) MultipartFile file
那么就需要我们去检查下前端页面是否存在这个字段了
|
问题三:关于报错
1
2
3
|
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代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
importjava.io.*;
byte
[]result=prev.getResponseData();
//这个是获取到请求返回的数据,prev是获取上个请求的返回
Stringfile_name=
"F:\\BaiDu.jpg"
;
//代表存放文件的位置和文件名
Filefile=newFile(file_name);
FileOutputStreamout=newFileOutputStream(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盘根目录下看,文件已经存在F盘根目录下了
以上就是利用jmeter实现上传下载操作啦,感兴趣的同学可以自己动动手练习下!
- End -
来源:oschina
链接:https://my.oschina.net/u/4512374/blog/4314929