Reputation: 113
from typing import List
from fastapi import FastAPI, File, UploadFile
from fastapi.responses import HTMLResponse
app = FastAPI()
@app.post("/files/")
async def create_files(files: List[bytes] = File(...)):
return {"file_sizes": [len(file) for file in files]}
@app.post("/uploadfiles/")
async def create_upload_files(files: List[UploadFile] = File(...)):
return {"filenames": [file.filename for file in files]}
I am required to get the multiple file upload field as an Optional one The documentation has the above mentioned code but it has no details on how to make the "FileUpload" field as an optional field.
Upvotes: 11
Views: 8904
Reputation: 7885
this worked for me
@app.post("/uploadfiles/")
def create_upload_files(
files: List[Union[UploadFile, None]] = File(None)
):
return {"filenames": [file.filename for file in files]}
Upvotes: 3
Reputation: 20746
You can use None
instead of ...
(Ellipsis) to make a field Optional
This is an Optional
field.
from typing import Optional
files: Optional[List[bytes]] = File(None)
This a required field.
files: List[bytes] = File(...)
Working example for your case.
from typing import List, Optional
from fastapi import FastAPI, File, UploadFile
from fastapi.responses import HTMLResponse
app = FastAPI()
@app.post("/files/")
async def create_files(files: Optional[List[bytes]] = File(None)):
return {"file_sizes": [len(file) for file in files]}
@app.post("/uploadfiles/")
async def create_upload_files(files: Optional[List[UploadFile]] = File(None)):
return {"filenames": [file.filename for file in files]}
Upvotes: 14