ファイルのアップロード

file フィールドがどのように検証されるか

  1. アップロードがジョブに届くまで
  2. 受け付けられるもの
  3. ファイルのルール

file フィールドは、起動リクエストがファイルについて述べている内容を決して信頼しません。起動時の検証は、サーバーのディスク上の ファイル自体をチェックします。


アップロードがジョブに届くまで

ファイルは、フォームが起動される前に、2 つのステップでアップロードされます。

  1. ブラウザーが POST /api/v2/job/upload でファイルをアップロードします。サーバーはそれを UPLOAD_PATH に保存します。
  2. 起動リクエストの 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) が決まります。