[Bug]: APIRequestContext multipart parameter does not allow user to send multiple files in a single field
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:
I have a suggested fix for this which I have already used locally -
Pull Request: (https://github.com/microsoft/playwright-python/pull/2778)
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.
This is a duplicate of microsoft/playwright#28070 that has been fixed in Node.js by microsoft/playwright#30489 by accepting FormData objects. In requests, you can pass a list of tuples in this case.