[python] Flask-WTF를 사용하여 파일 업로드 기능을 구현하는 방법은 어떻게 되나요?
-
Flask-WTF를 설치합니다.
$ pip install flask-wtf
-
Flask-WTF의
FileField
를 사용하여 파일 업로드를 할 수 있는 폼을 생성합니다.from flask_wtf import FlaskForm from wtforms import FileField, SubmitField class UploadForm(FlaskForm): file = FileField('파일 선택') submit = SubmitField('업로드')
-
파일 업로드를 처리할 라우트 함수를 작성합니다. 이때,
render_template
함수를 사용하여 업로드 폼을 보여줍니다.from flask import Flask, render_template, request from werkzeug.utils import secure_filename app = Flask(__name__) @app.route('/', methods=['GET', 'POST']) def upload_file(): form = UploadForm() if form.validate_on_submit(): # 업로드된 파일을 가져옵니다. file = form.file.data # 파일의 이름을 안전하게 만듭니다. filename = secure_filename(file.filename) # 파일을 저장합니다. file.save(filename) return '파일이 업로드 되었습니다!' return render_template('upload.html', form=form) if __name__ == '__main__': app.run()
-
업로드된 파일을 저장할 디렉토리를 생성합니다.
$ mkdir uploads
-
업로드된 파일을 저장할 경로를 설정합니다.
app.config
를 사용하여 설정할 수 있습니다.app.config['UPLOAD_FOLDER'] = 'uploads'
이제 파일 업로드 기능이 구현되었습니다. 업로드된 파일은 uploads
디렉토리에 저장됩니다. Flask-WTF는 업로드된 파일의 유효성을 자동으로 검사하고, 필요한 경우 오류 메시지를 표시합니다.
더 자세한 내용은 아래의 링크를 참고하시기 바랍니다.