PythonのWebフレームワークであるFlaskを使用して、ファイルアップロード機能を実装する方法について説明します。
Flaskでのファイルアップロードの基本
Flaskでファイルアップロードを実現する基本的なアイデアは非常にシンプルです。以下の手順で行います:
<form>
タグをenctype=multipart/form-data
とマークし、そのフォームに<input type=file>
を配置します。- アプリケーションは、リクエストオブジェクトの
files
ディクショナリからファイルにアクセスします。 - ファイルの
save()
メソッドを使用して、ファイルをファイルシステム上の特定の場所に永続的に保存します。
Flaskでのファイルアップロードのコード例
以下に、Flaskを使用してファイルを特定のアップロードフォルダにアップロードし、ユーザーにファイルを表示する非常に基本的なアプリケーションのコード例を示します。
import os
from flask import Flask, flash, request, redirect, url_for
from werkzeug.utils import secure_filename
UPLOAD_FOLDER = '/path/to/the/uploads'
ALLOWED_EXTENSIONS = {'txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif'}
app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
def allowed_file(filename):
return '.' in filename and \
filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS
@app.route('/', methods=['GET', 'POST'])
def upload_file():
if request.method == 'POST':
if 'file' not in request.files:
flash('No file part')
return redirect(request.url)
file = request.files['file']
if file.filename == '':
flash('No selected file')
return redirect(request.url)
if file and allowed_file(file.filename):
filename = secure_filename(file.filename)
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
return redirect(url_for('download_file', name=filename))
このコードでは、まずアップロードされるファイルの拡張子を制限しています。これは、サーバーがクライアントに直接データを送信する場合、ユーザーが任意のファイルをアップロードできないようにするためです。次に、ファイルがアップロードされ、そのファイル名が許可されている場合、ファイルはセキュアなファイル名で保存されます。
以上が、Python Flaskでのファイルアップロードの基本的な方法とコード例です。この情報がPython Flaskでのファイルアップロード機能の実装に役立つことを願っています。.