gpt4 book ai didi

php - 在 PHP 中比较文件校验和

转载 作者:搜寻专家 更新时间:2023-10-31 21:28:51 26 4
gpt4 key购买 nike

我正在编写一个文件上传站点,并且对节省空间很感兴趣。如果用户上传了一个文件,我想确保这个文件以前没有被上传过(如果已经上传过,我将指向数据库中现有的文件)。

我正在考虑对文件使用 sha1_file(),检查数据库以查看摘要数据库中是否存在摘要。然后我想起了鸽巢原则,决定将未消化的文件相互检查是否存在 sha1 摘要匹配。

这对我来说似乎效率低下。我想我可以在校验和匹配的情况下相互检查每个文件的第一个千字节。

我没有过多考虑 RAM 与 ROM 的值(value),检查文件所需的处理能力可能比我节省的存储空间成本更高。

这种方法有什么缺点吗?我是否在浪费时间来解决这个问题?

最佳答案

您可以使用 md5( file_data ) 来生成文件的名称,并且永远不可能上传具有不同名称的相同文件。唯一的问题是,两个不同的文件在技术上可能会生成相同的 md5,但这不太可能,特别是如果两个文件具有相同的扩展名,因此您可以认为这不是问题。在此示意图下,甚至没有理由进行检查。如果两个哈希值相同,它只会覆盖存储的文件。这就是大多数文件存储引擎在内部工作的方式,例如 zimg .如果您对冲突有疑虑,您可以首先查看该文件是否存在计算出的哈希值和扩展名,如果存在,您可以比较该存储文件的数据与您尝试存储的文件的数据。如果数据不相等,您可以让它通过电子邮件向您发送警报。

$data = file_get_contents('flowers.jpg');

$name = md5($data).'.jpg';

$fh = fopen($name,'w+');

fwrite($fh,$data);

fclose($fh);

关于php - 在 PHP 中比较文件校验和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32468038/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com