结构错误先拦截
重复输出名和常见非法名称在改名执行前成为阻断错误,减少批量下载后才发现冲突。
这份证据不把“安全”当成一句口号。它把当前生产批量改名与图片批次的可核对机制拆开:先看什么、什么会阻止执行、什么只是提醒、源文件是否会被覆盖,以及输出重名怎样处理。
依据绑定受审 commit 的实际批量改名、图片转换与输出命名源码重新核对。本次复核继续覆盖批量改名 Pro CSV 映射完整性:CSV 在本机采用严格字段状态解析,未闭合引号、未引用字段中的非法引号、引用字段闭合后的非法字符、不完整行与同一原文件名的冲突目标都会在进入映射状态前被拒绝;表头使用明确的双列识别,避免把普通文件名误当表头;非空映射值保持原始字符,不以 trim 改写用户文件名;“保留原扩展名”开启时 CSV 目标只能改变名称主体,关闭后目标扩展名才会生效。本次新增复核确认预览执行快照:通过设备工作集门禁并点击下载后,Renamer 先复制该次 file/newName 与计数元数据,再同步锁定工作集;ZIP 内容、成功统计和下载记录均使用同一快照,打包完成后才解锁。继续核对执行前预览、输出重名阻断和原文件保护。图片侧既有源图预览、活动批次锁定、设置撤销/重做和输出命名行为保持不变。这里记录的是可从当前实现核对的防错行为,不把 UI 提示或设备容量启发式扩大解释成零风险保证。
绑定生产 commit:467e9d6b;引用 5 个生产源码文件。改名工作区为每个文件计算并显示原文件名、新文件名、警告与错误,让用户在生成 ZIP 前逐项检查结果。点击确认下载后,该次 file/newName 对会复制为执行快照并锁定工作集,直到 ZIP 完成;ZIP 内容、成功计数与下载记录使用同一快照,避免打包中修改界面造成“看到的预览”和“收到的 ZIP”分叉。
源码:components/RenamerTool.tsx
CSV 映射在浏览器本地解析。未闭合双引号、未引用字段中的非法引号、引用字段闭合后的非法字符、缺少任一列的映射行,以及同一原文件名指向不同目标名称的冲突都会拒绝本次导入,不把部分坏数据写进映射状态。只有同时匹配受支持原文件名列和新文件名列的首行才被视作表头;非空映射键和值不会因为输入清洗而被去掉合法的前后空格。
源码:components/RenamerTool.tsx · lib/renamer-csv-map.ts
输出名称按不区分大小写的方式检查重复;同批次冲突会成为阻断错误,而不是等 ZIP 生成后才发现覆盖风险。
源码:components/RenamerTool.tsx
当前检查包括空名称、斜线/反斜线、控制字符、常见保留符号、结尾空格或句点、Windows 保留名,以及超过当前 180 字符上限的输出名。
源码:components/RenamerTool.tsx
“保留原扩展名”开启时,无论普通规则还是 CSV 映射都使用源文件扩展名;CSV 目标里的不同扩展名不会偷偷替换它。关闭该选项后,CSV 目标扩展名才可生效;如果有扩展名的源文件最终输出没有扩展名,工作区仍给出提醒,因为移除扩展名可能是用户有意操作。
源码:components/RenamerTool.tsx · lib/renamer-csv-map.ts
改名批次存在红色阻断错误时,生成下载 ZIP 的执行入口保持禁用,先要求解决命名冲突或非法名称。
源码:components/RenamerTool.tsx
改名工具根据设备内存、CPU 与粗指针提示选择保守的单次 ZIP 原始文件总字节窗口。超过窗口时,文件仍可留在批次中继续预览、排序与调整命名规则,但不会进入 JSZip 打包;500 个文件数量上限保持不变。
源码:components/RenamerTool.tsx · lib/renamer-zip-capacity.ts
执行时使用浏览器中已有的原 File 对象,把它们以拟议新名称写入新的 ZIP;FileNest 不直接覆盖或删除用户设备上的源文件。
源码:components/RenamerTool.tsx
图片在加入批次时为每个源文件建立一个浏览器 Object URL,多图批次显示可点击缩略图供处理前逐张切换检查;删除、清空或卸载工作区时会释放对应 URL。撤销/重做只恢复图片设置快照,不替换这些源文件对象。
源码:components/ImageConverterTool.tsx
图片输出使用同批次已用名称集合做不区分大小写的去重;发生冲突时依序生成 name (2)、name (3) 等名称,避免 ZIP 中出现同名结果。
源码:components/ImageConverterTool.tsx · lib/file-names.ts
重复输出名和常见非法名称在改名执行前成为阻断错误,减少批量下载后才发现冲突。
扩展名变化和编号顺序可能是故意的,因此预览不会假装软件能替用户判断所有业务语义。
改名结果进入新的 ZIP,而不是在网页里直接改写或删除用户设备上的原文件。