안녕하세요! 오늘은 FastAPI를 사용하여 이미지 파일을 서버에 POST 방식으로 업로드하고 저장하는 방법에 대해 알아보겠습니다. 클라이언트 측에서는 requests 라이브러리를 사용하여 이미지를 전송하는 예제를 제공할 예정입니다. FastAPI는 비동기 웹 프레임워크로, Python의 빠르고 효율적인 웹 개발을 가능하게 해줍니다.

FastAPI 서버 설정
먼저 FastAPI 서버를 간단하게 설정해보겠습니다. FastAPI와 uvicorn을 설치합니다. 아래의 명령어를 터미널에 입력하여 설치해주세요:
pip install fastapi uvicorn
이제 FastAPI 서버를 구현해봅시다.
from fastapi import FastAPI, UploadFile, File
import os
app = FastAPI()
# 이미지 저장 경로
UPLOAD_DIRECTORY = "./uploaded_images"
if not os.path.exists(UPLOAD_DIRECTORY):
os.makedirs(UPLOAD_DIRECTORY)
@app.post("/uploadimage/")
async def upload_image(file: UploadFile = File(...)):
file_location = os.path.join(UPLOAD_DIRECTORY, file.filename)
with open(file_location, "wb+") as file_object:
file_object.write(await file.read())
return {"info": f"파일 '{file.filename}'이 저장되었습니다."}
위 코드는 `/uploadimage/` 경로로 이미지 파일을 POST 방식으로 받는 FastAPI 서버를 설정하는 코드입니다. 파일이 성공적으로 저장되면 메시지를 반환합니다.
서버 실행하기
서버를 실행하기 위해 아래의 명령어를 터미널에 입력합니다:
uvicorn main:app --reload
위 명령어에서 `main`은 파일 이름, `app`은 FastAPI 애플리케이션 객체의 이름입니다. 서버가 실행되면 http://127.0.0.1:8000/docs 주소에 접속하여 Swagger UI를 통해 API를 테스트할 수 있습니다.
클라이언트 측 구현
이제 클라이언트 측에서 requests 라이브러리를 사용하여 이미지를 서버에 전송하는 방법을 알아보겠습니다. requests 라이브러리가 설치되어 있지 않다면 아래의 명령어로 설치해주세요:
pip install requests
클라이언트 코드는 다음과 같습니다:
import requests
def upload_image(image_path):
url = "http://127.0.0.1:8000/uploadimage/"
with open(image_path, "rb") as image_file:
response = requests.post(url, files={"file": image_file})
print(response.json())
# 이미지 파일 경로
upload_image("path/to/your/image.jpg")
위 코드는 이미지를 서버에 POST 요청으로 전송하는 간단한 클라이언트 코드입니다. `path/to/your/image.jpg` 부분에 업로드할 이미지의 경로를 입력하세요.
결론
FastAPI를 사용하여 이미지 파일을 업로드 받고, 클라이언트 측에서 requests 라이브러리를 통해 이미지를 전송하는 방법에 대해 알아보았습니다. 이러한 방법을 통해 효율적으로 API를 구축하고 다양한 파일을 다룰 수 있습니다. 추가적인 질문이나 도움이 필요하시다면 언제든지 댓글로 남겨주세요!
'IT > Python' 카테고리의 다른 글
파이썬 셀레니움으로 크롤링하기: 유용한 크롬 옵션 소개와 예제 (0) | 2025.03.12 |
---|---|
PyInstaller: Python 애플리케이션을 배포하는 최적의 솔루션 (0) | 2025.03.08 |
Python에서 if문과 switch문에 대해서 알아보기 (0) | 2025.03.08 |
클로드 AI API를 연결하는 간단한 파이썬 예제 (4) | 2025.03.02 |
Python으로 LangChain으로 GPT와 연결하기 (0) | 2025.03.01 |