ファイルのアップロード
file フィールドがどのように検証されるか
file フィールドは、起動リクエストがファイルについて述べている内容を決して信頼しません。起動時の検証は、サーバーのディスク上の ファイル自体をチェックします。
アップロードがジョブに届くまで
ファイルは、フォームが起動される前に、2 つのステップでアップロードされます。
- ブラウザーが
POST /api/v2/job/uploadでファイルをアップロードします。サーバーはそれをUPLOAD_PATHに保存します。 - 起動リクエストの
files部分で、そのアップロードについて記述します。
その後、起動時の検証がその記述をディスクと照合します。
- ファイルは
UPLOAD_PATHの中に存在する必要があります。 - パスとサイズは、リクエストからではなく、常にディスクから読み取られます。
受け付けられるもの
file フィールドが値を得るのは、検証済みのアップロードからだけです。それ以外はすべて破棄されます。
- 呼び出し元が
rawFormDataやextravarsに書き込んだパスは無視されます。 - 実際のアップロードがない必須の file フィールドは、
missingとして報告されます。
ファイルのルール
file フィールドのルールは、実際のアップロードに対してチェックされ、サイズはバイト単位です。
- name: firmware
type: file
required: true
maxSize: 104857600 # 100 MB
regex:
expression: '\.bin$'
description: Upload a .bin firmware image
minSize と maxSize はファイルの実際のサイズを、 regex はファイル名を比較します。フォームとは関係なく、 UPLOAD_MAX_GB で 1 回のアップロードのサイズの上限 (既定は 10 GB) が決まります。