이번 포스트에서는 Python의 웹 프레임워크인 Flask를 사용하여 파일 업로드 및 다운로드 기능을 구현하는 방법에 대해 알아보겠습니다.
1. Flask 설치하기
Flask를 사용하기 위해서는 먼저 Flask를 설치해야 합니다. 다음 명령을 사용하여 Flask를 설치할 수 있습니다:
$ pip install flask
2. 파일 업로드 기능 구현하기
먼저 파일을 업로드하는 기능을 구현해보겠습니다.
from flask import Flask, request, redirect, url_for
from werkzeug.utils import secure_filename
app = Flask(__name__)
# 파일을 업로드할 폴더 설정
UPLOAD_FOLDER = './uploads'
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
# 허용할 파일 확장자 설정
ALLOWED_EXTENSIONS = set(['txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif'])
# 허용할 파일인지 확인하는 함수
def allowed_file(filename):
return '.' in filename and \
filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS
@app.route('/', methods=['GET', 'POST'])
def upload_file():
if request.method == 'POST':
# 파일이 업로드되는지 확인
if 'file' not in request.files:
return redirect(request.url)
file = request.files['file']
# 파일이 비어있는지 확인
if file.filename == '':
return redirect(request.url)
# 파일이 허용된 확장자인지 확인
if file and allowed_file(file.filename):
# 파일명 중복을 피하기 위해 secure_filename을 사용하여 파일명 정규화
filename = secure_filename(file.filename)
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
return redirect(url_for('uploaded_file',
filename=filename))
return '''
<!doctype html>
<html>
<body>
<h1>파일 업로드</h1>
<form method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="업로드">
</form>
</body>
</html>
'''
@app.route('/uploads/<filename>')
def uploaded_file(filename):
return f'업로드한 파일: {filename}'
위의 코드는 /uploads
경로에 파일을 업로드하고, /uploads/<filename>
경로에서 업로드한 파일을 확인할 수 있도록 설정한 예제입니다.
3. 파일 다운로드 기능 구현하기
이번에는 파일을 다운로드하는 기능을 구현해보겠습니다.
from flask import Flask, send_from_directory
app = Flask(__name__)
# 다운로드할 파일이 저장된 폴더 설정
DOWNLOAD_FOLDER = './downloads'
app.config['DOWNLOAD_FOLDER'] = DOWNLOAD_FOLDER
@app.route('/downloads/<filename>')
def download_file(filename):
return send_from_directory(app.config['DOWNLOAD_FOLDER'],
filename, as_attachment=True)
위의 코드는 /downloads/<filename>
경로에서 원하는 파일을 다운로드할 수 있도록 설정한 예제입니다. as_attachment=True
를 통해 파일을 다운로드할 수 있게 설정합니다.
4. 실행해보기
위의 코드를 app.py
라는 이름으로 저장한 후, 다음 명령을 사용하여 Flask 애플리케이션을 실행할 수 있습니다:
$ flask run
웹 브라우저에서 http://localhost:5000
에 접속하여 파일 업로드 폼을 확인하고 파일을 업로드해보세요. 업로드한 파일은 uploads
폴더에 저장됩니다. 또한, http://localhost:5000/uploads/<filename>
경로를 통해 업로드한 파일을 확인할 수 있습니다.
또한 http://localhost:5000/downloads/<filename>
경로를 통해 원하는 파일을 다운로드할 수 있습니다. 다운로드한 파일은 downloads
폴더에 저장됩니다.
마무리
이번 포스트에서는 Flask를 이용하여 파일 업로드 및 다운로드 기능을 구현하는 방법을 알아보았습니다. Flask를 사용하면 간단하게 파일 업로드 및 다운로드 기능을 구현할 수 있으며, 이를 통해 웹 어플리케이션의 유용한 기능을 추가할 수 있습니다.