diff --git a/fastapi/dependencies/utils.py b/fastapi/dependencies/utils.py index 6b14dac8dc..8d6acdf2ad 100644 --- a/fastapi/dependencies/utils.py +++ b/fastapi/dependencies/utils.py @@ -933,7 +933,10 @@ async def _extract_form_body( assert isinstance(value, sequence_types) results: list[bytes | str] = [] for sub_value in value: - results.append(await sub_value.read()) + if isinstance(sub_value, UploadFile): + results.append(await sub_value.read()) + else: + results.append(sub_value) value = serialize_sequence_value(field=field, value=results) if value is not None: values[get_validation_alias(field)] = value diff --git a/tests/test_optional_file_list.py b/tests/test_optional_file_list.py index a57e6358fd..0e11a262aa 100644 --- a/tests/test_optional_file_list.py +++ b/tests/test_optional_file_list.py @@ -26,3 +26,13 @@ def test_optional_bytes_list_no_files(): response = client.post("/files") assert response.status_code == 200 assert response.json() == {"files_count": 0} + + +def test_optional_bytes_list_send_empty_str(): + client = TestClient(app) + response = client.post( + "/files", + data={"files": ""}, + ) + assert response.status_code == 200 + assert response.json() == {"files_count": 1, "sizes": [0]}