0

0

如何在浏览器中识别多个文件输入中的重复文件(基于元数据比对)

碧海醫心

碧海醫心

发布时间:2025-12-30 12:50:03

|

720人浏览过

|

来源于php中文网

原创

如何在浏览器中识别多个文件输入中的重复文件(基于元数据比对)

本文介绍一种无需读取文件内容、仅依赖浏览器提供的 file 对象元数据(如 size、type、name)进行轻量级重复文件识别的方法,适用于表单中多个 `` 场景,兼顾实用性与性能。

在 Web 表单中处理多文件上传时,用户可能从不同路径选择同名文件(如 report.pdf),甚至重复选择同一物理文件。由于浏览器出于安全限制,File API 不暴露文件路径、inode、UUID 或内容哈希,也无法直接获取唯一标识符(如 SHA-256),因此无法 100% 精确判定两个 File 对象是否指向同一底层文件。

但实践中,我们可通过组合多个高区分度的只读属性进行概率性去重判断:size(字节大小)、type(MIME 类型)、name(文件名)三者联合匹配,可显著降低误判率。虽然理论上存在不同文件恰好 size/type/name 完全一致的极端情况(碰撞概率极低,尤其当 size > 0 且 type 非空时),但在多数业务场景(如文档上传、图片管理)中已足够可靠。

以下是一个完整、可运行的示例,实现跨多个 元素的文件列表合并与重复检测:

微信 WeLM
微信 WeLM

WeLM不是一个直接的对话机器人,而是一个补全用户输入信息的生成模型。

下载

? 关键说明与注意事项:

  • 推荐组合判断:size + type 是最实用的双因子;添加 name 可提升用户体验(例如避免 invoice.pdf 与 scan.jpg 因巧合同 size/type 被误标),但不应作为唯一依据(同名不同内容很常见)。
  • ⚠️ lastModified 不可靠:用户可能手动修改时间戳,或不同设备同步导致不一致,不建议用于去重逻辑
  • ⚠️ webkitRelativePath 仅限目录上传:需设置 webkitdirectory 属性,且非标准、兼容性有限,不适用于普通文件选择。
  • ? 进阶优化方向:若需更高精度,可在用户确认后对疑似重复文件使用 FileReader.readAsArrayBuffer() 计算前 N KB 的快速哈希(如 xxHash),但会带来额外内存与 CPU 开销,需权衡。
  • ? 服务端兜底前端去重仅为体验优化,服务端仍必须做最终校验(如接收后计算内容哈希并查重),确保数据一致性。

综上,该方案以零内容加载为前提,在浏览器能力边界内实现了高效、可维护的重复文件识别,是现代文件上传流程中值得采纳的务实策略。

相关专题

更多
mysql标识符无效错误怎么解决
mysql标识符无效错误怎么解决

mysql标识符无效错误的解决办法:1、检查标识符是否被其他表或数据库使用;2、检查标识符是否包含特殊字符;3、使用引号包裹标识符;4、使用反引号包裹标识符;5、检查MySQL的配置文件等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

176

2023.12.04

Python标识符有哪些
Python标识符有哪些

Python标识符有变量标识符、函数标识符、类标识符、模块标识符、下划线开头的标识符、双下划线开头、双下划线结尾的标识符、整型标识符、浮点型标识符等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

270

2024.02.23

java标识符合集
java标识符合集

本专题整合了java标识符相关内容,想了解更多详细内容,请阅读下面的文章。

250

2025.06.11

c++标识符介绍
c++标识符介绍

本专题整合了c++标识符相关内容,阅读专题下面的文章了解更多详细内容。

121

2025.08.07

点击input框没有光标怎么办
点击input框没有光标怎么办

点击input框没有光标的解决办法:1、确认输入框焦点;2、清除浏览器缓存;3、更新浏览器;4、使用JavaScript;5、检查硬件设备;6、检查输入框属性;7、调试JavaScript代码;8、检查页面其他元素;9、考虑浏览器兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

180

2023.11.24

excel制作动态图表教程
excel制作动态图表教程

本专题整合了excel制作动态图表相关教程,阅读专题下面的文章了解更多详细教程。

24

2025.12.29

freeok看剧入口合集
freeok看剧入口合集

本专题整合了freeok看剧入口网址,阅读下面的文章了解更多网址。

74

2025.12.29

俄罗斯搜索引擎Yandex最新官方入口网址
俄罗斯搜索引擎Yandex最新官方入口网址

Yandex官方入口网址是https://yandex.com;用户可通过网页端直连或移动端浏览器直接访问,无需登录即可使用搜索、图片、新闻、地图等全部基础功能,并支持多语种检索与静态资源精准筛选。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

207

2025.12.29

python中def的用法大全
python中def的用法大全

def关键字用于在Python中定义函数。其基本语法包括函数名、参数列表、文档字符串和返回值。使用def可以定义无参数、单参数、多参数、默认参数和可变参数的函数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

16

2025.12.29

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Node.js 教程
Node.js 教程

共57课时 | 7.6万人学习

CSS3 教程
CSS3 教程

共18课时 | 4.1万人学习

Vue 教程
Vue 教程

共42课时 | 5.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号