[python] Flask-WTF에서 파일 업로드 시 파일 크기 제한을 설정하는 방법은 어떻게 되나요?
  1. Flask-WTF 설치하기

먼저, Flask-WTF 패키지를 설치해야 합니다. 다음 명령을 사용하여 설치할 수 있습니다.

pip install Flask-WTF
  1. 파일 업로드 폼 만들기

플라스크 애플리케이션에서 파일 업로드를 위한 폼을 생성합니다. 예를 들어, 다음과 같은 HTML 폼을 사용할 수 있습니다.

<form method="POST" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="submit" value="Upload">
</form>
  1. 파일 크기 제한 설정하기

Flask-WTF에서 파일 업로드 시 파일 크기 제한을 설정하기 위해 FileAllowed 밸리데이터를 사용할 수 있습니다.

from flask_wtf.file import FileField, FileAllowed
from wtforms import SubmitField
from flask_wtf import FlaskForm

class UploadForm(FlaskForm):
    file = FileField(validators=[FileAllowed(['jpg', 'png']), 'File size exceeds the limit'])
    submit = SubmitField('Upload')

위의 코드에서 FileAllowed 밸리데이터는 허용되는 파일의 확장명을 리스트로 전달받으며, FileField에 사용되었습니다. 또한, 파일 크기 제한을 초과했을 때의 오류 메시지도 설정할 수 있습니다.

  1. 업로드 파일 처리하기

플라스크 애플리케이션에서 파일 업로드를 처리하기 위한 뷰 함수를 작성합니다. 아래 예제는 업로드된 파일을 저장하는 예제입니다.

from flask import Flask, render_template, redirect, request
from werkzeug.utils import secure_filename

app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = 'uploads'

@app.route('/', methods=['GET', 'POST'])
def upload_file():
    form = UploadForm()
    if request.method == 'POST' and form.validate_on_submit():
        file = form.file.data
        file.save(os.path.join(app.config['UPLOAD_FOLDER'], secure_filename(file.filename)))
        return redirect('/')
    return render_template('index.html', form=form)

if __name__ == '__main__':
    app.run(debug=True)

위의 코드에서 UPLOAD_FOLDER 변수를 사용하여 업로드된 파일이 저장될 폴더를 지정할 수 있습니다. file.save() 메서드를 사용하여 파일을 저장합니다. secure_filename 함수를 사용하여 파일 이름에 악의적인 코드가 포함되지 않도록 보안 처리합니다.

이제 Flask-WTF를 사용하여 파일 업로드 시 파일 크기 제한을 설정할 수 있습니다. 파일 크기 제한을 초과하면 오류 메시지가 표시되며 파일이 업로드되지 않습니다.