공부/TIL(을 빙자한 기타)

fastapi 에서 UploadFile 의 파일 크기 확인하기

빛나는나무 2024. 1. 8. 21:31

FastAPI에서 업로드된 파일의 크기를 확인하려면 UploadFile 클래스를 사용하고, 이를 통해 content_length 속성을 확인할 있습니다. 다음은 파일 크기를 확인하고 500MB 초과하는지 여부를 검사하는 코드의 예시입니다.

from fastapi import FastAPI, UploadFile, HTTPException

app = FastAPI()

@app.post("/uploadfile/")
async def create_upload_file(file: UploadFile = File(...)):
    # 최대 허용 파일 크기 (500MB)
    max_file_size = 500 * 1024 * 1024  # 500MB

    # 파일 크기 확인
    if file.content_length > max_file_size:
        raise HTTPException(status_code=413, detail="File size exceeds the limit of 500MB")

    # 여기에서 파일을 처리하거나 저장하는 로직을 추가할 수 있습니다.
    # 예: file.filename을 사용하여 파일 이름을 얻고, file.file을 사용하여 파일 내용을 처리

    return {"filename": file.filename}

 

이 코드에서 file.content_length는 업로드된 파일의 크기를 나타냅니다. 이 값이 max_file_size보다 크면 HTTPException이 발생하고, 클라이언트에게 "File size exceeds the limit of 500MB"라는 메시지가 반환됩니다.

이렇게 파일 크기를 제한하면 클라이언트가 정의된 제한을 초과하는 파일을 업로드할 서버가 적절하게 응답할 있습니다.