Skip to content

20. Request Forms and Files


1. Request Forms and Files

  • FileForm을 사용하는 것과 같이 files 및 form fields를 정의할 수 있다.


Note

  • 업로드된 파일 및 form 데이터를 받기 위해서는 먼저, $ pip install python-multipart를 통해 python-multipart를 설치해야 한다.


2. Import File and Form

  • 먼저, fastapiFileForm을 임포트한다.


from fastapi import FastAPI, Form, File, UploadFile

app = FastAPI()

@app.post("/files/")
async def create_file(
    file: bytes = File(...), fileb: UploadFile = File(...), token: str = Form(...)
):
    return {
        "file_size": len(file),
        "token": token,
        "fileb_content_type": fileb.content_type,
    }


3. Define File and Form parameters

  • Body 또는 Query와 마찬가지로 file 및 form 매개변수를 생성한다.


from fastapi import FastAPI, Form, File, UploadFile

app = FastAPI()

@app.post("/files/")
async def create_file(
    file: bytes = File(...), fileb: UploadFile = File(...), token: str = Form(...)
):
    return {
        "file_size": len(file),
        "token": token,
        "fileb_content_type": fileb.content_type,
    }


  • 위의 코드를 실행하면, 파일 및 form fields는 form 데이터로 업로드되며 파일 및 form fields를 받게 된다.
  • 또한 일부 파일은 bytes로 선언하고, 일부는 UploadFile로 선언할 수 있다.
  • path operation에서 여러 FileForm 매개변수를 선언할 수 있다.
  • 하지만 이 경우 request에 application/json 대신 application/x-www-form-urlencoded를 사용하여 인코딩된 body가 있기 때문에 JSON의 형식으로 받는 Body fields는 선언할 수 없다.

References