Flask는 파이썬 웹 프레임워크로서 파일 업로드 및 다운로드 기능을 쉽게 구현할 수 있습니다. 파일 업로드를 통해 사용자는 서버로 파일을 전송하고, 파일 다운로드를 통해 서버는 사용자에게 파일을 제공할 수 있습니다. 이번 블로그 포스트에서는 Flask를 사용하여 파일 업로드와 다운로드 기능을 구현하는 방법을 알아보겠습니다.
1. 파일 업로드 구현
Flask에서 파일 업로드를 구현하기 위해서는 HTML의 <form>
요소와 enctype="multipart/form-data"
속성을 사용해야 합니다. 이렇게 설정하면 클라이언트가 서버로 파일을 전송할 수 있도록 해줍니다.
# app.py
from flask import Flask, request, render_template
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def upload_file():
if request.method == 'POST':
file = request.files['file']
# 파일 저장
file.save(file.filename)
return 'File uploaded successfully'
return render_template('upload.html')
if __name__ == '__main__':
app.run()
위의 코드에서는 /
경로로의 GET 요청이 들어오면 upload.html
템플릿 파일을 렌더링하고, POST 요청이 들어오면 업로드된 파일을 저장합니다. 업로드된 파일은 file
객체를 통해 접근할 수 있습니다.
<!-- upload.html -->
<!DOCTYPE html>
<html>
<head>
<title>File Upload</title>
</head>
<body>
<h1>File Upload</h1>
<form method="POST" action="/" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="Upload">
</form>
</body>
</html>
upload.html
파일은 파일 선택 및 업로드를 위한 HTML 폼을 정의하고 있습니다. 파일 선택하는 <input>
요소의 name
속성 값은 서버에서 사용하기 위해 지정해야 합니다.
2. 파일 다운로드 구현
파일 다운로드는 Flask에서 제공하는 send_file
함수를 사용하여 구현할 수 있습니다. send_file
함수는 파일을 사용자에게 전송하는 역할을 담당합니다.
# app.py
from flask import Flask, request, send_file
app = Flask(__name__)
@app.route('/download', methods=['GET'])
def download_file():
# 다운로드할 파일 경로
file_path = 'my_file.txt'
return send_file(file_path, as_attachment=True)
if __name__ == '__main__':
app.run()
위의 코드에서는 /download
경로로의 GET 요청이 들어오면 my_file.txt
파일을 다운로드합니다. as_attachment=True
를 설정하여 파일을 첨부 파일로 다운로드할 수 있도록 합니다.
마무리
이제 Flask를 사용하여 파일 업로드와 다운로드 기능을 구현하는 방법에 대해 알아보았습니다. 이것은 Flask를 사용하여 간단하게 파일 처리를 수행하는 기초적인 예제이며, 실제로는 보안과 예외 처리 등 다양한 요소를 고려해야 합니다. Flask를 활용하여 더 다양한 파일 처리 기능을 구현해 보세요!