[python] Flask를 사용하여 파일 공유 서비스 구현하기

파이썬의 Flask 프레임워크를 사용하여 파일 공유 서비스를 구현해보겠습니다. 이를 통해 사용자는 파일을 업로드하고 공유 링크를 생성할 수 있으며, 다른 사용자들도 이 링크를 통해 파일을 다운로드할 수 있게 됩니다.

프로젝트 구조

먼저, Flask 앱을 구현하기 전에 프로젝트의 디렉토리 구조를 설정해야 합니다. 일반적인 구조는 다음과 같습니다.

project/
|__ app.py
|__ templates/
    |__ index.html

app.py는 Flask 애플리케이션의 진입점이 될 것이며, templates 디렉토리에는 HTML 템플릿 파일이 위치합니다.

필수 라이브러리 설치

먼저 프로젝트 디렉토리 내에서 다음 명령어로 Flask를 설치합니다.

pip install flask

또한, 파일 업로드와 다운로드를 다루기 위해 Flask의 파일 업로드 모듈인 Flask-Uploads 라이브러리도 설치해야 합니다.

pip install Flask-Uploads

Flask 앱 구현

이제 app.py 파일을 열고 다음과 같이 간단한 Flask 앱을 구현해보겠습니다.

from flask import Flask, render_template, request
from flask_uploads import UploadSet, configure_uploads, ALL

app = Flask(__name__)

files = UploadSet('files', ALL)
app.config['UPLOADED_FILES_DEST'] = 'uploads'
configure_uploads(app, files)

@app.route('/', methods=['GET', 'POST'])
def index():
    if request.method == 'POST' and 'file' in request.files:
        filename = files.save(request.files['file'])
        file_url = files.url(filename)
        return file_url
    return render_template('index.html')

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

위 코드는 업로드된 파일을 uploads 디렉토리에 저장하고, 해당 파일의 URL을 반환하는 간단한 Flask 앱을 구현한 것입니다.

HTML 템플릿

이제 사용자에게 파일을 업로드할 수 있는 HTML 폼을 만들어보겠습니다.

<!DOCTYPE html>
<html>
<head>
    <title>파일 공유 서비스</title>
</head>
<body>
    <h2>파일 업로드</h2>
    <form method="POST" action="/" enctype="multipart/form-data">
        <input type="file" name="file">
        <input type="submit" value="업로드">
    </form>
</body>
</html>

위의 HTML 코드는 간단한 파일 업로드 폼을 생성하는 것입니다.

결론

이제 파일 공유 서비스를 구현하기 위한 Flask 앱과 HTML 템플릿이 모두 준비되었습니다. 사용자는 파일을 업로드하고 해당 파일의 URL을 얻을 수 있게 되었습니다. 관련된 기능을 더 추가하여 서비스를 확장시킬 수 있습니다.