[python] 파일 업로드 및 다운로드 처리하기

이번 포스트에서는 Python을 사용하여 파일 업로드 및 다운로드를 처리하는 방법에 대해 알아보겠습니다.

파일 업로드하기

파일을 업로드하기 위해서는 FlaskFlask-Uploads 모듈이 필요합니다. 먼저 이를 설치합니다.

pip install flask flask-uploads

다음은 파일 업로드를 처리하는 간단한 예제 코드입니다.

from flask import Flask, request
from flask_uploads import UploadSet, configure_uploads, IMAGES

app = Flask(__name__)
app.config['UPLOADED_PHOTOS_DEST'] = 'uploads'

photos = UploadSet('photos', IMAGES)
configure_uploads(app, photos)

@app.route('/upload', methods=['POST'])
def upload():
    if 'photo' in request.files:
        filename = photos.save(request.files['photo'])
        return f'File {filename} uploaded successfully'
    else:
        return 'No file selected'

if __name__ == '__main__':
    app.run()

위 코드에서는 uploads 폴더에 업로드된 파일을 저장하도록 설정하고, upload 엔드포인트에서 파일을 업로드합니다. 업로드된 파일은 photos.save() 메서드를 통해 저장되며, 업로드된 파일의 이름을 반환합니다.

파일 다운로드하기

파일을 다운로드하기 위해서는 Flask 모듈만으로도 가능합니다. 다음은 파일 다운로드를 처리하는 간단한 예제 코드입니다.

from flask import Flask, send_file

app = Flask(__name__)

@app.route('/download')
def download():
    filename = 'example.png'
    return send_file(filename, as_attachment=True)

if __name__ == '__main__':
    app.run()

위 코드에서는 download 엔드포인트에서 send_file() 함수를 사용하여 파일 다운로드를 처리합니다. 다운로드할 파일의 경로를 send_file() 함수의 첫 번째 인자로 전달하고, as_attachment=True를 설정하여 파일을 첨부 파일로 다운로드할 수 있도록 설정합니다.

이제 파일 업로드 및 다운로드를 처리하는 간단한 예제 코드를 살펴보았습니다. 실제로는 파일 업로드 시 보안 검사 및 업로드 제한, 파일 다운로드 시 권한 검사 등 추가 작업이 필요할 수 있습니다. 자세한 내용은 각 모듈의 문서를 참고하시기 바랍니다.

참고 문서: