当我们有基于二进制的表单数据时,在 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 上传文件,请尝试以下方法:

  1. 使用 HTTP 请求采样器并添加所有必要的详细信息,如服务器、端口、路径、方法等。
  2. 在 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]
    
  3. 在 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"}]}
    
  4. 一定要勾选Use multipart/form-data

  5. 在 Header 管理器中添加 header 所需的那个 [最初不包括它,如果它不适用于上述设置,则只包括 Header 管理器]

配置 JMeter 模拟文件上传的最简单方法就是使用 HTTP(S) Test Script Recorder

进行记录
  1. 配置 JMeter 进行记录。最简单的方法是使用 JMeter Templates 功能

    • 从 JMeter 的主菜单中选择 "File -> Templates - Recording" 并单击 "Create"
    • 展开 HTTP(S) 测试脚本记录器并单击 "Start"
  2. 将您要上传的文件复制到 JMeter 安装的 "bin" 文件夹中

  3. 在浏览器中执行上传
  4. JMeter会生成相关的HTTP Request sampler under the Recording Controller

对于更复杂的场景,您可能需要手动构建请求,如果需要,请参阅 Testing REST API File Uploads in JMeter 文章了解更多详细信息。