FILESデータ (FILESでーた) *

カテゴリ

plugin_httpserver > 簡易HTTPサーバ

種類

定数

初期値

🔍貯蔵庫ハブ / 🔍貯蔵庫 / 🔍マニュアル / 👓ソース / 📝履歴

説明 *

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サーバ出力。
    ここまで。
ここまで。

参考 *