JMeter上傳文件,並修改源碼參數化Content-Disposition 的 filename


一、JMeter上傳文件
1、使用F12或抓包工具抓包對應接口
如下圖為一個上傳圖片接口,抓包顯示內容如下:

 

2、將抓包到的信息頭內容填寫到jmeter的HTTP信息頭管理器

3、填寫參數

由抓包的接口信息可了解到此上傳文件接口為一個post接口,使用的Content-Type為multipart/form-data,將非上傳文件的參數全部填寫到HTTP請求的參數中,並勾選對POST使用multipart/form-data
4、切換到文件上傳頁面,填寫上傳文件參數
(1)選擇要上傳的文件的文件路徑;
(2)將抓包到的上傳文件參數的name填寫到參數名稱一項,Content-Disposition填寫到MIME類型

  5、切換到高級頁面,客戶端實現方法選擇Java

 

到這一步,大部分上傳文件類接口執行后可發現結果正確,如上傳正常,則不需要再看下面部分了。
 
二、修改源碼參數化Content-Disposition的filename
查看抓包信息,可發現此接口固定了filename的值為blob,而不是默認文件名稱。JMeter上傳文件參數的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
2、確認代碼存在
找到ApacheJMeter_http.jar的PostWriter.java的writeStartFileMultipart,確認有此部分代碼

 3、使用jd-gui反編譯jar包

jd-gui點擊file-Save All Sources,將整個ApacheJMeter_http.jar文件另存為壓縮包

 

4、解壓壓縮包,找到對應文件
解壓壓縮包,得到ApacheJMeter_http.jar.src文件夾,找到PostWriter.java文件,使用編輯器,如vscode打開,找到writeStartFileMultipart
 

 

 5、修改源碼

將write(out, (new File(filename)).getName());注釋掉,添加一句write(out, nameField);,保存文件
 

 

 6、重新編譯jar包,生成ApacheJMeter_http.jar

cmd切換到ApacheJMeter_http.jar.src文件下,執行jar -cvf ApacheJMeter_http.jar *,重新打包生成ApacheJMeter_http.jar
 

 

 

 7、替換ApacheJMeter_http.jar文件,並修改jmeter信息頭

將ApacheJMeter_http.jar復制到apache-jmeter-5.1.1\lib\ext下替換原文件(記得備份原文件哦),重新打開jmeter,HTTP信息頭管理器里的Content-Type值添加指定的filename,重新執行則可執行成功
 

 

 

如上圖,已可執行成功,至此修改源碼參數化Content-Disposition的filename使上傳文件接口調通已完成。


免責聲明!

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



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