[python] Flask-RESTful에서 크기 제한된 파일 업로드 방법

Flask-RESTful은 Python 웹 프레임워크인 Flask의 확장 모듈로, RESTful API를 쉽게 개발할 수 있는 기능을 제공합니다. 이번 포스트에서는 Flask-RESTful을 사용하여 크기 제한된 파일 업로드를 구현하는 방법에 대해 알아보겠습니다.

1. Flask-RESTful 설치하기

먼저 Flask-RESTful을 설치해야 합니다. 아래 명령을 사용하여 Flask-RESTful을 설치할 수 있습니다.

pip install Flask-RESTful

2. 파일 업로드 기능 구현하기

Flask-RESTful을 사용하여 파일 업로드 기능을 구현하려면 먼저 Flask-RESTful의 Resource 클래스를 상속받는 클래스를 생성해야 합니다.

from flask import Flask, request
from flask_restful import Api, Resource

app = Flask(__name__)
api = Api(app)

class FileUploadResource(Resource):
    def post(self):
        file = request.files['file']
        if file:
            # 파일 처리 로직을 구현합니다.
            # 예시: 파일을 디스크에 저장하거나 다른 서비스에 업로드합니다.
            return {"message": "파일 업로드 성공"}
        else:
            return {"message": "파일이 전송되지 않았습니다."}, 400

api.add_resource(FileUploadResource, '/upload')

위 코드에서 FileUploadResource 클래스는 post 메소드를 구현하고 있습니다. 클라이언트가 POST 요청을 보내면 서버에서는 request.files를 통해 전송된 파일을 가져올 수 있습니다. 이 후 파일 처리 로직을 구현하여 파일을 원하는 방식으로 처리할 수 있습니다. 예를 들어, 파일을 디스크에 저장하거나 다른 서비스에 업로드할 수 있습니다.

3. 파일 크기 제한 설정하기

Flask-RESTful에서는 파일 업로드의 크기 제한을 설정할 수 있습니다. 아래 예제는 10MB를 넘는 파일은 업로드를 거부하는 방법을 보여줍니다.

app.config['MAX_CONTENT_LENGTH'] = 10 * 1024 * 1024  # 10MB

위 코드를 Flask 애플리케이션 생성 부분에 추가하면, 클라이언트가 10MB를 넘는 파일을 업로드하려고 하면 서버에서 업로드를 거부하게 됩니다.

마무리

이제 Flask-RESTful을 사용하여 크기 제한된 파일 업로드를 구현하는 방법을 알아보았습니다. Flask-RESTful은 간단하고 강력한 도구이므로 RESTful API 개발을 위해 많이 사용되고 있습니다. 문서링크에서 더 자세한 정보를 확인할 수 있습니다.