修复:附件总量上限填 10240 被浏览器拦住(step 与 min 冲突) (#1)
用户反馈「全站附件总量上限填 10240 不行」。 根因:input 写成 step="16" min="10"。 HTML 的 step 是从 min 起算的 —— 合法值只有 10、26、42、58…(10 + 16n)。 10240 不在这个序列里,浏览器直接判为非法值、拒绝提交。 更糟的是这不是个例:1024(1G)、2048、4096、8192 全都不合法, 只有 10/26/42 这种怪数字能填进去。这个 bug 从该字段上线就存在。 修法: - step="16" → step="any",允许任意数值 - 补 max="100000",与服务端 [10, 100000] 区间对齐, 避免用户填 999999 被服务端静默截断成 100000 顺带排查另外两个容量字段,确认没事: - 图片单张上限 min=0.2 step=0.1 → 0.2 起步正好对齐,0.5/1/5/10 都合法 - 视频单个上限 min=1 step=1 → 整数都对 只有总量那一个字段踩了坑。 新增 tools 级检查脚本(_tooling 侧 fb_input_constraint_check.py): 按 HTML 规范逐条验算每个 number 输入框的 min/max/step 是否放行 「默认值」与「常见取值」,并核对前后端区间是否一致。19/19 通过。 这类错误肉眼看不出来,必须用规则算。 验证:约束一致性检查 19/19;服务端 MB↔字节往返一致(含 10240)。
This commit is contained in:
@@ -675,7 +675,7 @@ fb_layout_head('管理后台', ['robots' => 'noindex,nofollow']);
|
||||
<label class="field"><span>单个视频上限(MB)</span>
|
||||
<input type="number" step="1" min="1" max="500" name="upload_video_max_bytes" value="<?php echo $mb(fb_upload_cfg('video_max_bytes', 52428800)); ?>"></label>
|
||||
<label class="field"><span>全站附件总量上限(MB)</span>
|
||||
<input type="number" step="16" min="10" name="upload_total_cap_bytes" value="<?php echo $mb(fb_upload_cfg('total_cap_bytes', 1073741824)); ?>"></label>
|
||||
<input type="number" step="any" min="10" max="100000" name="upload_total_cap_bytes" value="<?php echo $mb(fb_upload_cfg('total_cap_bytes', 1073741824)); ?>"></label>
|
||||
<label class="field"><span>附件保留天数</span>
|
||||
<input type="number" name="upload_retention_days" min="1" max="3650" value="<?php echo (int)fb_upload_cfg('retention_days', 365); ?>"></label>
|
||||
<label class="field"><span>每 IP 每小时最多上传几次</span>
|
||||
|
||||
Reference in New Issue
Block a user