zoukankan      html  css  js  c++  java
  • Jmeter之模拟文件上传、下载接口操作

    上周群里有位同学,问我用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实现上传下载操作啦,感兴趣的同学可以自己动动手练习下

  • 相关阅读:
    HDU4474 Yet Another Multiple Problem BFS搜索
    HDU4473 Exam 数学分析
    2013ACM多校联合(4)
    POJ1273 网络流...
    HDU4472 Count 递推
    POJ1149 PIGS 网络流
    UVA10881 Piotr's Ants 想法题
    javascript js string.Format()收集
    修改 设置 vs.net 网站 调试 设为 起始页
    【转】HTML5杂谈 概念与现行游戏 割绳子 宝石迷阵
  • 原文地址:https://www.cnblogs.com/longronglang/p/9845620.html
Copyright © 2011-2022 走看看