Skip to content

[Bug]: APIRequestContext multipart parameter does not allow user to send multiple files in a single field #2784

Open
@adriangardiner-taina

Description

@adriangardiner-taina

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

adriangardiner-taina commented on Mar 11, 2025

@adriangardiner-taina
Author

I have a suggested fix for this which I have already used locally -

Pull Request: (#2778)

changed the title [-]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[/+] on Mar 12, 2025
mxschmitt

mxschmitt commented on Mar 12, 2025

@mxschmitt
Member

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

dgozman commented on Mar 17, 2025

@dgozman
Contributor

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @dgozman@mxschmitt@adriangardiner-taina

        Issue actions

          [Bug]: APIRequestContext multipart parameter does not allow user to send multiple files in a single field · Issue #2784 · microsoft/playwright-python