[파이썬] Flask의 파일 업로드 및 다운로드
Flask는 Python으로 작성된 웹 애플리케이션을 구축하기 위한 마이크로 웹 프레임워크입니다. Flask를 사용하면 간단하고 빠르게 웹 애플리케이션을 개발할 수 있습니다. 이번 글에서는 Flask를 사용하여 파일 업로드와 다운로드를 구현하는 방법에 대해 살펴보겠습니다.
파일 업로드 구현하기
- Flask 설치하기
pip install flask
- 필요한 모듈 import 하기
from flask import Flask, request, render_template
- Flask 애플리케이션 생성하기
app = Flask(__name__)
- 업로드된 파일을 저장할 디렉토리 설정하기
app.config['UPLOAD_FOLDER'] = 'uploads'
- 파일 업로드를 위한 라우트 생성하기
@app.route('/upload', methods=['GET', 'POST']) def upload_file(): if request.method == 'POST': file = request.files['file'] file.save(os.path.join(app.config['UPLOAD_FOLDER'], file.filename)) return '파일이 업로드 되었습니다.' return render_template('upload.html')
- HTML 템플릿 작성하기
<!DOCTYPE html> <html> <body> <h2>파일 업로드</h2> <form action="/upload" method="post" enctype="multipart/form-data"> <input type="file" name="file"><br><br> <input type="submit" value="업로드"> </form> </body> </html>
- Flask 애플리케이션 실행하기
if __name__ == '__main__': app.run()
파일 다운로드 구현하기
- 파일 다운로드를 위한 라우트 생성하기
@app.route('/download/<filename>', methods=['GET']) def download_file(filename): return send_from_directory(app.config['UPLOAD_FOLDER'], filename, as_attachment=True)
- 다운로드할 파일을 위한 HTML 템플릿 작성하기
<!DOCTYPE html> <html> <body> <h2>파일 다운로드</h2> {% for filename in os.listdir(app.config['UPLOAD_FOLDER']) %} <a href="/download/{{ filename }}">{{ filename }}</a><br> {% endfor %} </body> </html>
- Flask 애플리케이션 실행하기
결론
이 글에서는 Flask를 사용하여 파일 업로드 및 다운로드를 구현하는 방법을 알아보았습니다. Flask는 간단하고 강력한 마이크로 웹 프레임워크로서 다양한 웹 애플리케이션 개발에 유용하게 사용될 수 있습니다. 파일 업로드 및 다운로드 기능은 많은 웹 애플리케이션에서 필수적인 기능이므로, Flask를 사용하여 이를 구현하는 방법을 숙지하는 것은 매우 유용합니다.