一、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使上傳文件接口調通已完成。