Open
Description
Version
1.50.0
Steps to reproduce
Setup a multipart data object with an array of files being sent in a single field using the ApiRequestContext object
multipart_data = {
files= [
{ "name"="Document1.txt", "mimeType":"text/plain", buffer: b"Text file 1 content" },
{ "name"="Document2.txt", "mimeType":"text/plain", buffer: b"Text file 2 content" }
]
}
Attempt to send this to an API endpoint that expects to find a list of files against the field named "files".
Example steps : TBC
Expected behavior
I expect to receive a list of files in my API endpoint in a single form field.
Actual behavior
0 files are sent to the API Endpoint.
Additional context
Issue has been identified in playwright/_impl/_fetch.py#L382
Suggest an extra helper method and foreach loop added to identify and attach arrays of file payloads
Environment
- Operating System: [Windows 10]
- CPU: [Intel i7]
- Browser: [All]
- Python Version: [3.11.6]
- Other info:
Activity
adriangardiner-taina commentedon Mar 11, 2025
I have a suggested fix for this which I have already used locally -
Pull Request: (#2778)
[-]WIP [Bug]: APIRequestContext multipart parameter does not allow user to send multiple files in a single field[/-][+][Bug]: APIRequestContext multipart parameter does not allow user to send multiple files in a single field[/+]mxschmitt commentedon Mar 12, 2025
Looks like also something which would affect upstream, I'll move it for now until we have decided how we want to move forward on this. Once we decided how to fix it all the language bindings would consume the same fix.
dgozman commentedon Mar 17, 2025
This is a duplicate of microsoft/playwright#28070 that has been fixed in Node.js by microsoft/playwright#30489 by accepting
FormData
objects. Inrequests
, you can pass a list of tuples in this case.