Skip to content

[BUG] [Python-fastapi] File input incorrectly generated with FastAPI Form #20115

@reyescabello

Description

@reyescabello

Bug Report Checklist

  • Have you provided a full/minimal spec to reproduce the issue?
  • Have you validated the input using an OpenAPI validator (example)?
  • Have you tested with the latest master to confirm the issue still exists?
  • Have you searched for related issues/PRs?
  • What's the actual output vs expected output?
  • [Optional] Sponsorship to speed up the bug fix or feature request (example)
Description

When generating the specified content in the OpenAPI file, the endpoint that receives a file generates an input of type string in the generated Swagger UI. This happens because the generated FastAPI endpoint uses a Form.

We compared this case with another application using the same file, where the input is correctly generated as a file upload field.

openapi-generator version

v7.9.0

OpenAPI declaration file content or url

https://gist.github.com/reyescabello/6cd965708fd0b03e8eadb9f3c0c0a899#file-query_param_example-yml

Generation Details

Generated with jar:

java -jar openapi-generator-cli.jar generate -i openapi.yml -g python-fastapi -o openapi_server

Steps to reproduce

When generating the specified content in the OpenAPI file, the endpoint that includes the file looks like this:

async def upload_post(
    file: str = Form(None, description=""),
) -> None:
    
    return await BaseExampleApi.subclasses[0]().upload_post(file)

And this is what it looks like in swagger.

image

The expected code is something like this:

async def upload_post(
    file: UploadFile,
) -> None:
    
    return await BaseExampleApi.subclasses[0]().upload_post(file)
Related issues/PRs
Suggest a fix

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions