apache / apache/jmeter

Cannot upload files in jMeter 5.6.2

Open
#6,085 7 comments 2 reactions 0 assignees View on GitHub
defect to-triage
Dominant language
Java
Stars
9.5k
Forks
2.3k
Avg merge
1d 22h
Merged PRs (30d)
5

Description

### Expected behavior

- I configure an HTTP Request sampler with multipart/form-data parameters
- I include a file in the Files Upload tab and provide the correct parameter mapping to the expected param name
- The file is located in the jMeter bin directory
- I run the test plan

Expected behaviour: The file is uploaded

### Actual behavior

- The request appears to execute correctly but the actual file is never uploaded
- The server receives no file bytes in the request body and the `files` parameter doesn't contain the filename
- The request in the view results tree contains the correct Content-Disposition and Content-Type headers
```
Content-Disposition: form-data; name="files"; filename="example.xlsx"
Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
```

**The same request works as expected in jMeter 5.4.3**

### Steps to reproduce the problem

# Outline

As you can see from the description below, the file upload is broken in both, the jMeter proxy as well as when using an HTTP request sampler to upload it.

# Option 1 - record the request from the browser
1. Configure and run the jMeter proxy including the HTTPS Test Script Recorder and a Recording Controller
2. Configure your browser to use this proxy
3. Visit your website and upload the file
1. Check the request in the browser's developer tools
2. The file is correctly sent from the browser
3. The file is, however, removed from the request on the jMeter proxy
4. In your browser, revert the proxy settings back to the system proxy
5. Repeat the process of uploading the file
1. This time the file is correctly uploaded

## Option 1.1 - copy the recorded request and run it as a part of a test plan
1. Copy the recorded request from the session described above into a new test plan
2. Run the test plan (assuming you have the correct authentication cookies/headers present)
3. The file isn't uploaded

# Option 2 - verify the request in Postman and try to send the request from Postman via jMeter proxy
1. Download and install Postman and start a Postman proxy session
2. Try to upload your file to your website - Postman captures the request
3. Stop the Postman proxy
4. Create a new Postman request from the captured request and run the request
1. The file is uploaded correctly
5. In jMeter, turn on the jMeter proxy
6. Go back to Postman and configure Postman to use the jMeter proxy (File > Settings > Proxy)
7. Run the same request as in step 4 above
1. The jMeter proxy removes the file from the request
2. The request passes the proxy and reaches your server endpoint but the file isn't there

### JMeter Version

5.6.2

### Java Version

JDK 21 2023-09-19 LTS

### OS Version

Microsoft Windows 10 Enterprise, OS Version: 10.0.19045 N/A Build 19045

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.