[python] 웹 개발에서의 파일 업로드와 다운로드

파일 업로드와 다운로드는 웹 개발에서 자주 사용되는 기능입니다. 사용자가 웹 페이지를 통해 파일을 업로드하고, 다른 사용자가 해당 파일을 다운로드할 수 있게 해주는 기능입니다. 이번 글에서는 파이썬을 사용하여 웹 개발에서의 파일 업로드와 다운로드를 구현하는 방법을 알아보겠습니다.

파일 업로드

웹 애플리케이션에서 파일 업로드를 구현하기 위해서는 파일을 서버로 전송하는 방법이 필요합니다. 이를 위해 다음과 같은 단계를 거칠 수 있습니다.

  1. HTML form을 사용하여 파일 선택 창을 생성합니다.
<form action="/upload" method="POST" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="submit" value="Upload">
</form>
  1. 파이썬 프레임워크인 Flask를 사용하여 서버 측 코드를 작성합니다. 업로드된 파일을 저장하고 필요한 처리를 수행할 수 있습니다.
from flask import Flask, request

app = Flask(__name__)

@app.route('/upload', methods=['POST'])
def upload():
    file = request.files['file']
    filename = secure_filename(file.filename)
    file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
    return 'File uploaded successfully'
  1. 서버 측 코드에서 업로드된 파일을 저장할 경로를 지정해야 합니다.
app.config['UPLOAD_FOLDER'] = '/path/to/upload/folder'

위와 같은 코드를 사용하여 파일 업로드를 구현할 수 있습니다.

파일 다운로드

파일 다운로드를 구현하기 위해서는 서버에서 파일을 읽어 클라이언트에게 전달하는 방법이 필요합니다. 이를 위해 다음과 같은 단계를 거칠 수 있습니다.

  1. 클라이언트가 원하는 파일의 링크를 생성합니다.
<a href="/download/file.txt">Download file</a>
  1. 파이썬 프레임워크인 Flask를 사용하여 서버 측 코드를 작성합니다. 클라이언트의 요청을 받아 해당 파일을 읽어 전달합니다.
from flask import Flask, send_file

app = Flask(__name__)

@app.route('/download/<filename>')
def download(filename):
    path = os.path.join(app.config['UPLOAD_FOLDER'], filename)
    return send_file(path, as_attachment=True)

위와 같은 코드를 사용하여 파일 다운로드를 구현할 수 있습니다.

결론

위에서 소개한 방법을 사용하면 파이썬을 활용하여 웹 개발에서 파일 업로드와 다운로드를 구현할 수 있습니다. 파일 업로드와 다운로드는 웹 애플리케이션에서 필요한 기능이며, 이를 구현하기 위해 제공되는 라이브러리와 도구를 적절히 활용하면 효과적이고 안정적인 파일 관리 기능을 구현할 수 있습니다.

참고 자료