plugin_httpserver/簡易HTTPサーバ受信時で、`multipart/form-data` 形式(`<form enctype="multipart/form-data">`)でファイルがPOST送信された際に、アップロードされたファイル情報の配列が「FILESデータ」に自動代入されます。
送信された各ファイルはサーバーの一時フォルダに自動保存され、FILESデータからその情報を取得できます。
FILESデータ内の各要素は辞書型で、以下のキーを含みます。
| キー | 型 | 説明 | 例 |
| `name` | 文字列 | クライアント側の元ファイル名 | `image.png` |
| `path` | 文字列 | サーバー上の一時保存先フルパス | `/tmp/nako3-plugin_httpserver_upload/...` |
| `size` | 数値 | ファイルサイズ(バイト数) | `1048576` |
| `type` | 文字列 | ファイルのMIMEタイプ | `image/png` |
| `fieldName` | 文字列 | フォームのinputタグのname属性 | `attachment` |
アップロードされたファイルを永続化したい場合は、`ファイル上書コピー` や `ファイル上書移動` 命令を使って目的の保存先フォルダへコピー・移動してください。
!『plugin_httpserver.mjs』を取り込む。
PORT=8000。
PORTで簡易HTTPサーバ起動時には
「http://localhost:{PORT}/ でサーバーが起動しました。」と表示。
ここまで。
「/upload」で簡易HTTPサーバ受信した時には
もし、HTTPメソッド="POST"ならば
もし、(FILESデータの要素数) > 0ならば
ファイル情報=FILESデータ[0]
アップ名=ファイル情報["name"]
一時パス=ファイル情報["path"]
ファイル容量=ファイル情報["size"]
ファイル種別=ファイル情報["type"]
# カレントディレクトリに保存
保存先=「./{アップ名}」
一時パスを保存先へファイル上書コピー。
HTML=「<html><meta charset="utf-8"><body>
<h1>アップロード完了</h1>
<p>ファイル名: {アップ名} ({ファイル容量} bytes / {ファイル種別})</p>
<p>保存先: {保存先}</p>
<p><a href="/upload">戻る</a></p>
</body></html>」
HTMLを簡易HTTPサーバ出力。
違えば
「ファイルが選択されていません。<a href="/upload">戻る</a>」を簡易HTTPサーバ出力。
ここまで。
違えば
HTML=「<html><meta charset="utf-8"><body>
<h1>ファイル送信</h1>
<form action="/upload" method="POST" enctype="multipart/form-data">
<input type="file" name="attachment"><br><br>
<button type="submit">送信</button>
</form>
</body></html>」
HTMLを簡易HTTPサーバ出力。
ここまで。
ここまで。