[python] 파일 업로드 진행률 확인하기

파일 업로드는 웹 개발에서 자주 사용되는 기능 중 하나입니다. 사용자로부터 파일을 업로드 받을 때, 파일 업로드 진행률을 확인하는 것은 사용자 경험을 향상시키는데 중요한 역할을 합니다.

이번 글에서는 Python을 이용하여 파일 업로드 진행률을 확인하는 방법을 알아보겠습니다.

1. Flask를 사용하여 파일 업로드하기

Python에서 웹 개발을 위해 많이 사용되는 프레임워크 중 하나인 Flask를 사용하여 파일 업로드를 구현해보겠습니다. Flask는 간단하고 가벼운 웹 프레임워크로 알려져 있습니다.

from flask import Flask, request

app = Flask(__name__)

@app.route('/upload', methods=['POST'])
def upload():
    file = request.files['file']
    # 파일 업로드 로직 작성
    return '파일 업로드가 완료되었습니다.'

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

위의 코드에서 /upload 경로로 POST 요청이 들어오면 upload 함수가 실행됩니다. request.files를 통해 업로드된 파일에 접근할 수 있습니다.

2. 파일 업로드 진행률 확인하기

파일 업로드 진행률을 확인하기 위해서는 웹소켓(Websocket)을 사용하여 실시간으로 업로드 상태를 알려주는 방법을 사용할 수 있습니다. Flask-SocketIO 라이브러리를 사용하여 파일 업로드 진행률을 확인하는 예제를 살펴보겠습니다.

from flask import Flask, render_template, request
from flask_socketio import SocketIO, emit

app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)

@app.route('/')
def index():
    return render_template('index.html')

@socketio.on('upload')
def upload(data):
    file = data['file']
    # 파일 업로드 로직 작성
    percentage = 50  # 파일 업로드 진행률 50%
    emit('update_progress', {'percentage': percentage})

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

위의 코드에서 index.html은 파일 업로드 진행률을 표시하는 데 사용되는 템플릿 파일입니다. 또한 upload 함수에서는 파일 업로드 진행률을 업데이트하는 로직을 작성할 수 있습니다. emit 함수를 통해 update_progress 이벤트를 발생시켜 클라이언트에게 진행률 정보를 전달합니다.

Flask-SocketIO 라이브러리는 실시간 양방향 통신을 제공하여 파일 업로드 진행률을 실시간으로 확인할 수 있습니다.

결론

Python을 이용하여 파일 업로드 진행률을 확인하는 방법을 알아보았습니다. Flask 프레임워크와 Flask-SocketIO 라이브러리를 사용하면 쉽게 파일 업로드 진행률을 확인할 수 있습니다. 이를 통해 사용자에게 업로드 상태를 실시간으로 보여줌으로써 좀 더 효율적이고 사용자 중심의 웹 애플리케이션을 개발할 수 있습니다.