Flask で複数おファイルをアップロードする方法です。
次の2つのファイルが必要です。
multi_upload.py
static/upload.html
multi_upload.py
# -*- coding: utf-8 -*-
#
# multi_upload.py
#
# Apr/15/2018
#
# ------------------------------------------------------------------
from flask import Flask, request, make_response, jsonify
import os
import sys
import werkzeug
from datetime import datetime
# flask
app = Flask(__name__)
# limit upload file size : 1MB
app.config['MAX_CONTENT_LENGTH'] = 1 * 1024 * 1024
#
#
UPLOAD_DIR="/tmp"
# ------------------------------------------------------------------
@app.route('/data/upload', methods=['POST'])
def upload_multipart():
sys.stderr.write("*** upload_multipart *** start ***\n")
if 'uploadFile' not in request.files:
make_response(jsonify({'result':'uploadFile is required.'}))
#
upload_files = request.files.getlist('uploadFile_aa')
sys.stderr.write("len(upload_files) = %d\n" % len(upload_files))
for file in upload_files:
fileName = file.filename
sys.stderr.write("fileName = " + fileName + "\n")
saveFileName = datetime.now().strftime("%Y%m%d_%H%M%S_") \
+ werkzeug.utils.secure_filename(fileName)
file.save(os.path.join(UPLOAD_DIR, saveFileName))
#
sys.stderr.write("*** upload_multipart *** end ***\n")
#
return make_response(jsonify({'result':'upload OK.'}))
# ------------------------------------------------------------------
@app.errorhandler(werkzeug.exceptions.RequestEntityTooLarge)
def handle_over_max_file_size(error):
print("werkzeug.exceptions.RequestEntityTooLarge")
return 'result : file size is overed.'
# ------------------------------------------------------------------
# main
if __name__ == "__main__":
print(app.url_map)
app.run(host='localhost', port=3000)
#
# ------------------------------------------------------------------
static/upload.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
</head>
<body>
<form action="/data/upload" method="post" enctype="multipart/form-data">
<input type="file" name="uploadFile_aa"/ multiple="multiple">
<input type="submit" value="submit"/>
</form>
</body>
</html>
サーバーの起動
python multi_upload.py
ブラウザーで次にアクセス
ファイルを選択して、Submit をクリックすれば、/tmp にファイルがアップロードされます。