我正在使用HTML5文件API构建一个文件上传器。根据文件包含的实际数据,我想确保没有重复的文件被上传。这意味着两个文件应该被认为是相同的,即使它们的名称不同或位于不同的文件夹。
我考虑过用md5计算哈希值,但因为这一切都必须发生在客户端,使用javascript,更大的文件将花费太长时间。当我说大的时候,我指的是高达5gb的视频。
要清楚,这并不一定涉及校验和,我只想唯一地标识文件。对于这个目的,哈希可能有点过头了,但它是我首先想到的。
更新:我想我需要一个轻量级的指纹算法。我在维基百科上找到了Rabin作为一个例子,但我不知道如何在javascript中实现它。
没有捷径。如果您需要零歧义地识别重复文件,那么您必须读取并比较文件的完整内容。
但是如果你能忍受一定程度的误报,那么你可能会采取一些策略。对于类似的问题,我计算给定文件块子集的MD5哈希值(使用预定义的不变窗口)。