このチュートリアルにようこそ! ここでは、Flask で HTML フォームを使ってファイルをアップロードする方法を学びます。
さて、コーダー諸君、始めましょう。
How to Upload Files using Python Flask?
Flaskでファイルをアップロードするのは簡単な作業です。
フロースキーマは以下の通りです。
- ファイルアップロードのインターフェイスを表示するための HTML フォーム
- アップロードされたファイルをFlask Viewで保存する
といったところです。
ここで必要なのはこれだけです。
1. ファイルアップロードのためのHTMLフォーム
ファイルアップロードを扱うには、HTML テンプレートの form 属性に enctype = “multipart/form-data” を追加する必要があります。
HTMLフォームのサンプルは以下のようなものです。
< html >
< body >
< form action = "http://localhost:5000/endpoint" method = "POST" enctype = "multipart/form-data" >
< input type = "file" name = "file" />
< input type = "submit" value = "Submit" />
</ form >
</ body >
</ html >
|
2. ファイルの保存
Flask では、アップロードされたファイルはまずサーバー上の一時的な場所に保存され、その後保存先に恒久的に保存されます。
保存先の場所とファイルの最大サイズは、Flask の設定にて指定することができます。
構文 | 説明 |
---|---|
app.config[‘UPLOAD_FOLDER’] | 保存先フォルダを指定する |
app.config[‘MAX_CONTENT-PATH’] | ファイルの最大sixeをバイト数で指定する| |
保存先のファイル名は、直接ハードコーディングするか、filename関数を使用して保存することができます。
f = request.files[ 'file' ]
f.save(f.filename) |
アップロードされたファイルは、secure_filename関数を使用して安全なバージョンを使用することが常に推奨されます。
f = request.files[ 'file' ]
f.save(secure_filename(f.filename)) |
この記事もチェック:FlaskのCookiesの設定、保存や取得等の使い方を分かりやすく解説する
Flask のファイルアップロードフォームをコーディングする
理論を理解したところで、本題に入り、Flask を使ってファイルをアップロードするタスクを実行するために必要なコードの手順を正確に理解しましょう。
1. フォームのテンプレート
簡単なHTMLフォーム「form.html」ファイルを、以下のコードで作成します。
< html >
< body >
< form action = "http://localhost:5000/upload" method = "POST" enctype = "multipart/form-data" >
< input type = "file" name = "File" />
< input type = "submit" value = "Submit" />
</ form >
</ body >
</ html >
|
このシンプルなフォームは、ユーザが送信したファイルを取り込むだけです。
Flask Forms の詳細については、Flask Forms の記事を参照してください。
この記事もチェック:Flaskのライブラリflask-wtfの使い方|簡単にフォームを作成するよ
2. Flask の View 関数をコーディングする
では、Flask アプリケーションに以下のコードを追加してください。
from flask import Flask,render_template,request
from werkzeug import secure_filename
@app .route( '/form' )
def form():
return render_template( 'form.html' )
@app .route( '/upload' , methods = [ 'POST' , 'GET' ])
def upload():
if request.method = = 'POST' :
f = request.files[ 'file' ]
f.save(secure_filename(f.filename))
return "File saved successfully"
app.run(host = 'localhost' , port = 5000 )
|
ここで
- Form View は Form を表示します。
- フォームが送信されると、フォームデータ(アップロードファイル)がPOSTメソッドでUpload Viewに(リクエストオブジェクトの一部として)送信されます。
-
- Upload View は f.save() 属性で永久保存する前に、ファイルを変数 f に一時的に保存します。
Flask のフォームについてもっと知りたい方は、 Flask Forms の記事をご覧ください。
3. コードの実装
サーバーを起動して、確認してみましょう。
ファイルを選択し、送信をクリックします。
これでファイルの保存は成功です。
これで、フォルダ内の Flask アプリケーションの横に、アップロードされたファイルが表示されるようになります。
これで完了です。
ファイルのアップロードが完了しました。
まとめ
このチュートリアルは以上です。
このチュートリアルを理解するために、上記の例を試してみてください。
では、また次の記事でお会いしましょう。