[python] Flask에서 파일 업로드와 다운로드 기능 구현

파이썬의 Flask 프레임워크를 사용하면 웹 애플리케이션에 파일 업로드와 다운로드 기능을 간단하게 구현할 수 있습니다. 이 기능을 통해 사용자는 웹 페이지를 통해 파일을 업로드하고 다운로드할 수 있습니다.

파일 업로드 기능 구현

먼저, Flask 애플리케이션에 파일 업로드를 구현하는 방법에 대해 알아보겠습니다. 다음은 파일을 업로드하는 간단한 예제 코드입니다.

from flask import Flask, request, redirect, url_for
from werkzeug.utils import secure_filename
import os

app = Flask(__name__)

# 업로드된 파일을 저장할 디렉토리
UPLOAD_FOLDER = '/path/to/uploads'
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER

# 업로드 허용할 파일 확장자
ALLOWED_EXTENSIONS = {'txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif'}

def allowed_file(filename):
    return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS

@app.route('/upload', methods=['GET', 'POST'])
def upload_file():
    if request.method == 'POST':
        file = request.files['file']
        if file and allowed_file(file.filename):
            filename = secure_filename(file.filename)
            file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
            return '파일 업로드 성공'
    return '''
    <html>
        <body>
            <form method="post" enctype="multipart/form-data">
                <input type="file" name="file">
                <input type="submit">
            </form>
        </body>
    </html>
    '''

이 예제는 /upload 엔드포인트를 통해 파일을 업로드할 수 있는 기능을 구현한 것입니다. 사용자는 파일 선택 후 제출을 클릭하여 파일을 업로드할 수 있습니다.

파일 다운로드 기능 구현

다음으로, Flask 애플리케이션에 파일 다운로드를 구현하는 방법에 대해 알아보겠습니다. 아래는 파일을 다운로드하는 예제 코드입니다.

from flask import send_from_directory

@app.route('/download/<filename>', methods=['GET'])
def download_file(filename):
    return send_from_directory(app.config['UPLOAD_FOLDER'], filename, as_attachment=True)

위의 예제는 /download/<filename> 엔드포인트를 통해 사용자가 업로드한 파일을 다운로드할 수 있도록 구현한 것입니다. 사용자는 해당 엔드포인트에 파일 이름을 지정하여 해당 파일을 다운로드할 수 있습니다.

이렇게 Flask를 사용하여 파일 업로드와 다운로드 기능을 구현할 수 있습니다. 이러한 기능을 웹 애플리케이션에 추가하여 파일 관리 기능을 제공할 수 있습니다.

더 많은 정보를 원하시면 Flask 공식 문서를 참고하세요.