当我们有基于二进制的表单数据时,在 Jmeter 中为 POST 方法上传文件
File Upload in Jmeter for POST method, when we have binary based form data
我正在尝试使用 jmeter 为 API POST 方法执行文件上传操作。在 Jmeter 中它请求结果为 403 但在网页中它是 200.
参考了很多在线资源并进行了多次尝试,我无法破解该解决方案。
如何在 jmeter 4.0 中处理以下表单数据,如您所见,有 2 个东西,文件和文件详细信息。如何处理?
我还包含了 header 值。请查收。
下面是POST方法的表格数据:
------WebKitFormBoundarylyJiQdD1alYKbAKW
Content-Disposition: form-data;名字="files";文件名="Sample_Report.pdf"
Content-Type: application/pdf
------WebKitFormBoundarylyJiQdD1alYKbAKW
Content-Disposition: form-data;名字="filedetails"
{"serviceRequestId":"RandomNumber","filedetails":[{"fileName":"Sample_Report.pdf","fileUniqueName":"Randomnumber-a575d680-ceb0-11e9-a25d-2590f89b0ed0.pdf", "fileType":"application/pdf","fileSize":1117730,"status":"New"}]}
------WebKitFormBoundarylyJiQdD1alYKbAKW--
请求Headers:
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarylyJiQdD1alYKbAKW
我应该可以通过 JMeter 上传单个/多个文件。
要使用 JMeter 上传文件,请尝试以下方法:
- 使用 HTTP 请求采样器并添加所有必要的详细信息,如服务器、端口、路径、方法等。
在 HTTP 采样器的 File Upload section
中包含以下内容
File Path = Sample_Report.pdf
Parameter Name = files
MIME Type = multipart/form-data [if this does not work use application/pdf]
在 HTTP 采样器的 Parameters section
中包含以下内容
Name = filedetails
Value = {"serviceRequestId":"RandomNumber","filedetails":[{"fileName":"Sample_Report.pdf","fileUniqueName":"Randomnumber-a575d680-ceb0-11e9-a25d-2590f89b0ed0.pdf","fileType":"application/pdf","fileSize":1117730,"status":"New"}]}
一定要勾选Use multipart/form-data
在 Header 管理器中添加 header 所需的那个 [最初不包括它,如果它不适用于上述设置,则只包括 Header 管理器]
配置 JMeter 模拟文件上传的最简单方法就是使用 HTTP(S) Test Script Recorder
进行记录
配置 JMeter 进行记录。最简单的方法是使用 JMeter Templates 功能
- 从 JMeter 的主菜单中选择 "File -> Templates - Recording" 并单击 "Create"
- 展开 HTTP(S) 测试脚本记录器并单击 "Start"
将您要上传的文件复制到 JMeter 安装的 "bin" 文件夹中
- 在浏览器中执行上传
- JMeter会生成相关的HTTP Request sampler under the Recording Controller
对于更复杂的场景,您可能需要手动构建请求,如果需要,请参阅 Testing REST API File Uploads in JMeter 文章了解更多详细信息。
我正在尝试使用 jmeter 为 API POST 方法执行文件上传操作。在 Jmeter 中它请求结果为 403 但在网页中它是 200.
参考了很多在线资源并进行了多次尝试,我无法破解该解决方案。
如何在 jmeter 4.0 中处理以下表单数据,如您所见,有 2 个东西,文件和文件详细信息。如何处理?
我还包含了 header 值。请查收。
下面是POST方法的表格数据:
------WebKitFormBoundarylyJiQdD1alYKbAKW Content-Disposition: form-data;名字="files";文件名="Sample_Report.pdf" Content-Type: application/pdf
------WebKitFormBoundarylyJiQdD1alYKbAKW Content-Disposition: form-data;名字="filedetails"
{"serviceRequestId":"RandomNumber","filedetails":[{"fileName":"Sample_Report.pdf","fileUniqueName":"Randomnumber-a575d680-ceb0-11e9-a25d-2590f89b0ed0.pdf", "fileType":"application/pdf","fileSize":1117730,"status":"New"}]} ------WebKitFormBoundarylyJiQdD1alYKbAKW--
请求Headers:
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarylyJiQdD1alYKbAKW
我应该可以通过 JMeter 上传单个/多个文件。
要使用 JMeter 上传文件,请尝试以下方法:
- 使用 HTTP 请求采样器并添加所有必要的详细信息,如服务器、端口、路径、方法等。
在 HTTP 采样器的
File Upload section
中包含以下内容File Path = Sample_Report.pdf Parameter Name = files MIME Type = multipart/form-data [if this does not work use application/pdf]
在 HTTP 采样器的
Parameters section
中包含以下内容Name = filedetails Value = {"serviceRequestId":"RandomNumber","filedetails":[{"fileName":"Sample_Report.pdf","fileUniqueName":"Randomnumber-a575d680-ceb0-11e9-a25d-2590f89b0ed0.pdf","fileType":"application/pdf","fileSize":1117730,"status":"New"}]}
一定要勾选
Use multipart/form-data
在 Header 管理器中添加 header 所需的那个 [最初不包括它,如果它不适用于上述设置,则只包括 Header 管理器]
配置 JMeter 模拟文件上传的最简单方法就是使用 HTTP(S) Test Script Recorder
进行记录配置 JMeter 进行记录。最简单的方法是使用 JMeter Templates 功能
- 从 JMeter 的主菜单中选择 "File -> Templates - Recording" 并单击 "Create"
- 展开 HTTP(S) 测试脚本记录器并单击 "Start"
将您要上传的文件复制到 JMeter 安装的 "bin" 文件夹中
- 在浏览器中执行上传
- JMeter会生成相关的HTTP Request sampler under the Recording Controller
对于更复杂的场景,您可能需要手动构建请求,如果需要,请参阅 Testing REST API File Uploads in JMeter 文章了解更多详细信息。