[python] Flask에서 파일 업로드 기능 구현하기

Flask는 간단하고 가벼운 웹 프레임워크로서 파일 업로드와 관련된 기능을 쉽게 구현할 수 있습니다. 이번 포스트에서는 Flask를 이용하여 파일 업로드 기능을 구현하는 방법에 대해 알아보겠습니다.

필수 패키지 설치

먼저 Flask 프로젝트에 파일 업로드 기능을 추가하기 위해 flaskflask-Uploads 패키지를 설치해야 합니다. 아래의 명령어를 사용하여 설치할 수 있습니다.

pip install flask flask-uploads

파일 업로드 라우트 생성

파일 업로드를 처리할 라우트를 생성합니다. 이를 위해 Flask 앱에서 Flask-Uploads 패키지를 import 하고, 업로드를 처리할 라우트를 작성합니다.

from flask import Flask, render_template, request
from flask_uploads import UploadSet, configure_uploads, IMAGES, UploadNotAllowed

app = Flask(__name__)

photos = UploadSet('photos', IMAGES)

app.config['UPLOADED_PHOTOS_DEST'] = 'uploads'
configure_uploads(app, photos)

@app.route('/upload', methods=['GET', 'POST'])
def upload_file():
    if request.method == 'POST' and 'photo' in request.files:
        try:
            filename = photos.save(request.files['photo'])
            return f'File uploaded successfully as {filename}'
        except UploadNotAllowed:
            return 'Allowed image types are -> png, jpg, jpeg, gif'
    return render_template('upload.html')

HTML 폼 생성

이제 파일을 업로드할 수 있는 HTML 폼을 생성합니다. 아래는 파일 업로드 폼을 제공하는 upload.html 파일의 내용입니다.

<!DOCTYPE html>
<html>
<body>
    <h2>파일 업로드</h2>
    <form action="/upload" method="post" enctype="multipart/form-data">
        <input type="file" name="photo">
        <input type="submit" value="업로드">
    </form>
</body>
</html>

위와 같이 파이썬 Flask를 활용하여 파일 업로드 기능을 구현할 수 있습니다. 간단한 몇 줄의 코드로 사용자로 하여금 파일을 업로드할 수 있는 기능을 제공할 수 있습니다. 물론, 실제 프로젝트에서는 보안과 예외처리에 대한 고려가 필요하지만, 기본 동작 방식에 대한 이해는 도움이 될 것입니다.

참고 자료

이상으로 파일 업로드 기능을 구현하기 위한 Flask 애플리케이션에 대해 알아보았습니다. 해당 기능을 활용하여 다양한 프로젝트에서 파일 관리 기능을 추가할 수 있을 것입니다.