Skip to content
0
/ Guide/Form
1/28/2026
2.3m
AI 摘要

本文介绍了使用原生 HTML form 标签提交数据的格式,特别强调了 FormData 在文件上传中的应用。表单包含文本、下拉选择、多选框、单选框、隐藏字段及单/多文件上传,提交时通过 multipart/form-data 格式传输数据,支持 jpgpngpdf 等文件类型。

Form

记录一下,原生的 Form 提交的数据格式。许多现代化的组件库中,文件上传组件功能,仍然默认使用 FormData 格式上传,通过 action 属性指定调用的地址

<form action="/todo/update" method="POST" enctype="multipart/form-data">
    <!-- 原有表单项:保留所有功能 -->
    <div class="form-group">
        <label for="todoName">任务名称</label>
        <input type="text" id="todoName" name="todoName" placeholder="请输入任务名称" required>
    </div>

    <div class="form-group">
        <label for="priority">任务优先级</label>
        <select id="priority" name="priority" required>
            <option value="">请选择优先级</option>
            <option value="high">高优先级</option>
            <option value="medium" selected>中优先级</option>
            <option value="low">低优先级</option>
        </select>
    </div>

    <div class="form-group">
        <label for="description">任务描述</label>
        <textarea id="description" name="description" rows="4" placeholder="请输入任务详细描述"></textarea>
    </div>

    <div class="form-group">
        <label>任务标签(可多选)</label>
        <div class="checkbox-group">
            <input type="checkbox" id="tagWork" name="tags" value="work">
            <label for="tagWork">工作</label>

            <input type="checkbox" id="tagLife" name="tags" value="life">
            <label for="tagLife">生活</label>

            <input type="checkbox" id="tagStudy" name="tags" value="study">
            <label for="tagStudy">学习</label>
        </div>
    </div>

    <div class="form-group">
        <label>任务状态</label>
        <div class="checkbox-group">
            <input type="radio" id="statusPending" name="status" value="pending" checked>
            <label for="statusPending">待处理</label>

            <input type="radio" id="statusDoing" name="status" value="doing">
            <label for="statusDoing">处理中</label>

            <input type="radio" id="statusDone" name="status" value="done">
            <label for="statusDone">已完成</label>
        </div>
    </div>

    <input type="hidden" name="todoId" value="1001">

    <!-- 新增:1. 单文件上传 -->
    <div class="form-group">
        <label for="singleFile">单文件上传(如任务封面)</label>
        <input type="file" id="singleFile" name="singleFile" accept=".jpg,.png,.pdf">
        <div class="file-tip">支持格式:jpg、png、pdf,仅可选择1个文件</div>
    </div>

    <!-- 新增:2. 多文件上传 -->
    <div class="form-group">
        <label for="multiFiles">多文件上传(如任务附件)</label>
        <input type="file" id="multiFiles" name="multiFiles" multiple accept=".doc,.docx,.xls,.xlsx,.pdf">
    </div>

    <!-- 提交按钮 -->
    <button type="submit">提交更新(含文件)</button>
</form>

将会产生如下的请求,通过 FormData 携带二进制数据

Released under the MIT License.