[파이썬] Flask의 파일 업로드 및 다운로드

Flask는 Python으로 작성된 웹 애플리케이션을 구축하기 위한 마이크로 웹 프레임워크입니다. Flask를 사용하면 간단하고 빠르게 웹 애플리케이션을 개발할 수 있습니다. 이번 글에서는 Flask를 사용하여 파일 업로드와 다운로드를 구현하는 방법에 대해 살펴보겠습니다.

파일 업로드 구현하기

  1. Flask 설치하기
    pip install flask
    
  2. 필요한 모듈 import 하기
    from flask import Flask, request, render_template
    
  3. Flask 애플리케이션 생성하기
    app = Flask(__name__)
    
  4. 업로드된 파일을 저장할 디렉토리 설정하기
    app.config['UPLOAD_FOLDER'] = 'uploads'
    
  5. 파일 업로드를 위한 라우트 생성하기
    @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')
    
  6. 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>
    
  7. Flask 애플리케이션 실행하기
    if __name__ == '__main__':
        app.run()
    

파일 다운로드 구현하기

  1. 파일 다운로드를 위한 라우트 생성하기
    @app.route('/download/<filename>', methods=['GET'])
    def download_file(filename):
        return send_from_directory(app.config['UPLOAD_FOLDER'], filename, as_attachment=True)
    
  2. 다운로드할 파일을 위한 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>
       
    
  3. Flask 애플리케이션 실행하기

결론

이 글에서는 Flask를 사용하여 파일 업로드 및 다운로드를 구현하는 방법을 알아보았습니다. Flask는 간단하고 강력한 마이크로 웹 프레임워크로서 다양한 웹 애플리케이션 개발에 유용하게 사용될 수 있습니다. 파일 업로드 및 다운로드 기능은 많은 웹 애플리케이션에서 필수적인 기능이므로, Flask를 사용하여 이를 구현하는 방법을 숙지하는 것은 매우 유용합니다.