先区分没有变化和处理失败
把 Flux Art 产出的图片放进自建素材工具后,用户可能反复选择同一文件,希望重新处理,却看不到反应;也可能点开选择框又取消,原先可用的素材反而消失。两个现象都与应用怎样解释选择事件有关。本文讲浏览器文件输入部件,不是平台文件上传限制。先明确“重新选择”和“重新处理当前素材”是否为两个动作,不能要求用户靠反复打开系统窗口来猜测应用状态。
已接受素材应有独立状态
建议把已确认的 File 对象与业务素材编号保存在应用状态中,文件输入框只作为取得候选文件的入口。打开对话框不意味着原选择已被撤销,取消也不应自动删除旧素材。显示区应说明当前已接受文件与正在选择的候选之间的关系。诊断时记录事件类型、文件数量和本次业务编号,不记录用户完整磁盘路径,更不要从输入框的字符串值推断真实文件位置。
正确理解 cancel 与 accept
MDN 文件输入文档说明,取消选择以及重新选择此前相同文件都可能触发 cancel;accept 是文件类型提示,不是强制安全验证。文件实际来自 files 列表,界面值可能带有假路径。不能把没有 change 一律当作文件损坏,也不能把通过选择框当作已通过格式审核。下面的状态表用于设计自建交互;具体浏览器版本仍需实测事件行为,未测环境不自动继承通过结论。
| 用户动作 | 业务状态 | 核对重点 |
|---|---|---|
| 打开后取消 | 保留已接受素材 | 不误清空 |
| 重选相同文件 | 可能没有变化 | 不误报损坏 |
| 重新处理按钮 | 重用明确的素材快照 | 不重复建业务记录 |
| 选择不同文件 | 先作为候选 | 验证后接管 |
| 不支持的文件 | 候选拒绝 | 旧素材仍可用 |
| 主动移除素材 | 明确清除当前项 | 与取消分开 |
为重试提供明确入口
如果业务目标是再次执行同一张已接受图片的本地处理,应提供“重新处理当前文件”按钮,直接使用当前素材快照,而不是强迫重新选择。若采用读取后清空输入值以允许下一次同文件选择的实现,必须先把候选文件和状态保存好,并测试取消后的展示;输入控件为空不应使业务误认为用户已删除素材。重试仍要关联原业务版本,不能无意新建重复记录。
真正换图时先验证候选
收到新文件后,先在候选状态检查数量、实际可读性和业务允许的格式,再让它接管已接受素材。多文件输入需要明确全部接受、逐项接受还是整体拒绝,不要悄悄只拿第一项却显示已导入全部。验证失败时指出失败文件与原因,并保留仍可用的旧素材。若这一步会发起网络请求,继续执行服务端验证,不能把前端过滤器当成内容安全或格式正确的证明。
用取消场景检验是否误删
假设用户已接受甲图,打开选择框后取消,再用重新处理按钮执行甲图。这是假设操作,不是真实平台测试。合格结果是甲图仍在且重试身份明确。然后选择同名但内容不同的乙图,确认应用不会仅凭名称跳过。最后选择不支持的文件,确认它不会替换甲图并留下模糊的成功提示。记录每条路径的可见状态、接受事件和处理结果,不能只统计 change 的次数。
不要模拟任意本地路径
文件选择的边界包括用户主动提供文件。不要为省去对话框而尝试把某个磁盘路径字符串写进文件输入控件;这也不能代替取得真实文件对象。自动化测试可以使用测试框架明确支持的文件注入方式,但测试行为不能被包装成生产网页能够任意读取用户磁盘。业务日志只保留必要的文件名、大小及操作编号,涉及隐私的内容应按自己的数据规则处理。
把可访问操作纳入交付
选择入口需要清楚的标签,键盘用户能到达,错误信息应能关联当前候选文件。重新处理、移除当前素材和选择新文件三个按钮不要共用含糊文案。取消后焦点与当前素材说明仍应可理解。建议同时验收鼠标、键盘和目标移动设备的文件选择流程;系统界面不同不代表事件必然相同。尚未验证的环境标记待补证,不以桌面测试替代全部设备验收。
资料及平台范围
技术依据核对于2026年11月9日:文件输入及取消事件见 https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/input/file 。本文建议的候选状态、重试按钮与交付记录由自建应用实现。Flux Art 生成结果可用于商业用途,输入素材权利与商品真实性需另行核验;业务接入入口为 https://flux-art.net/zh/openapi 。文件选择器是否需要重置,应依据实际应用状态和测试结果判断,不改变平台的事实口径。