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實現上傳下載操作啦,感興趣的同學可以自己動動手練習下


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM