PythonのWebフレームワークであるFlaskを使用して、ファイルアップロード機能を実装する方法について説明します。この記事は、Flaskでmultipart/form-data
によるファイルアップロードを実現する方法という記事を参考にしています。
まず、Flaskアプリケーションの設定で、アップロードファイルのサイズ制限を設定します。これは、セキュリティ対策として重要です。Flaskでは、MAX_CONTENT_LENGTH
を設定することで、データサイズの上限を設定することができます。
# flask app
app = Flask(__name__)
# limit upload file size : 1MB
app.config['MAX_CONTENT_LENGTH'] = 1 * 1024 * 1024
次に、アップロードされたファイルを保存するディレクトリを設定します。このディレクトリは、Webからアクセス可能な場所にするか、アクセス不可能な場所にするかは、業務要件によります。
# ex) set UPLOAD_DIR_PATH=C:/tmp/flaskUploadDir
UPLOAD_DIR = os.getenv("UPLOAD_DIR_PATH")
そして、ファイルアップロードのためのエンドポイントを設定します。このエンドポイントでは、request.files
からアップロードされたファイルを取得し、保存します。
@app.route('/data/upload', methods=['POST'])
def upload_multipart():
if 'uploadFile' not in request.files:
make_response(jsonify({'result':'uploadFile is required.'}))
file = request.files['uploadFile']
fileName = file.filename
if '' == fileName:
make_response(jsonify({'result':'filename must not empty.'}))
saveFileName = datetime.now().strftime("%Y%m%d_%H%M%S_") + werkzeug.utils.secure_filename(fileName)
file.save(os.path.join(UPLOAD_DIR, saveFileName))
return make_response(jsonify({'result':'upload OK.'}))
以上のように設定することで、Flaskを使用してファイルアップロード機能を実装することができます。詳細な説明やコードの全体像については、参考リンクをご覧ください。.