FastAPI는 파이썬의 웹 프레임워크로써, 간단하고 빠른 API 개발을 위해 설계된 도구입니다. 파일 업로드는 웹 애플리케이션에서 필수적인 기능 중 하나이며, FastAPI에서는 이를 간단하게 처리할 수 있습니다.
1. FastAPI에서 파일 업로드를 위한 준비
먼저, FastAPI에서 파일을 업로드하기 위해 필요한 패키지를 설치해야 합니다. 이를 위해 python-multipart
패키지가 필요합니다. 다음 명령을 사용하여 패키지를 설치합니다.
pip install python-multipart
2. FastAPI에서 파일 업로드 처리하기
FastAPI에서 파일을 업로드하기 위해서는 먼저 File
객체를 사용해야 합니다. 이를 위해 fastapi.UploadFile
모듈을 임포트합니다.
from fastapi import FastAPI, UploadFile, File
app = FastAPI()
@app.post("/upload")
async def upload_file(file: UploadFile = File(...)):
contents = await file.read()
# 파일 처리 로직 작성
return {"filename": file.filename}
위의 예제 코드에서는 /upload
엔드포인트에서 파일을 업로드할 수 있습니다. file
인자는 UploadFile
타입으로 정의되어 있으며, File
객체를 통해 해당 파일을 전달할 수 있습니다. 업로드된 파일은 await file.read()
를 통해 읽을 수 있습니다.
파일 처리 로직을 작성한 후에는 필요한 작업을 수행하고 반환하고자 하는 데이터를 return
문을 통해 JSON 형태로 반환합니다. 위의 예제에서는 간단히 업로드된 파일의 이름을 반환하도록 작성되었습니다.
3. 실제 사용 예제
FastAPI에서 파일 업로드를 처리하는 예제를 살펴보겠습니다. 예를 들어, 프로필 이미지를 업로드하고 이를 서버에 저장하는 기능을 구현한다고 가정해 봅시다.
@app.post("/upload")
async def upload_file(file: UploadFile = File(...)):
# 프로필 이미지를 저장할 경로
save_path = f"uploads/{file.filename}"
# 파일 저장
with open(save_path, "wb") as buffer:
# 업로드된 파일을 청크 단위로 저장
while True:
chunk = await file.read(1024)
if not chunk:
break
buffer.write(chunk)
return {"filename": file.filename}
위의 예제에서는 업로드된 파일을 uploads
디렉토리에 저장하는 기능을 구현하였습니다. file.filename
은 업로드된 파일의 이름을 의미합니다. 파일을 저장하기 위해 open
함수를 사용하고, 읽은 청크를 반복적으로 저장하는 방식으로 파일을 저장합니다.
마치며
FastAPI를 사용하면 파일 업로드 처리를 간단하고 효율적으로 수행할 수 있습니다. 위의 예제 코드를 통해 FastAPI에서 파일 업로드를 처리하는 방법을 익혀보세요. #FastAPI #파일업로드