我正在尝试通过PHP网站允许用户上传文件。由于所有文件都保存在服务器上的单个文件夹中,虽然概率较低,但有可能两个不同的用户上传了两个文件,这些文件尽管不同,但名称完全相同。或者它们是完全相同的文件。
在这两种情况下,我想立即使用
然而,在
警告:如果您保存了一个md5_file哈希值以记录已上传的文件,并且这对于防止用户上传相同的文件很有用,请注意,在使用move_uploaded_file之后,md5_file哈希值会更改!当删除文件时,您无法找到相应的哈希值并将其从数据库中删除。
这是真的吗?在将文件从临时目录移动到永久位置后,文件在tmp目录中的MD5哈希值会更改吗?我不明白为什么会这样。无论如何,还有其他更好的方法来确保同一文件不会多次上传到文件系统吗?
在这两种情况下,我想立即使用
exec(“openssl md5”.$file ['upload'] ['tmp_name'])
确定文件的MD5哈希值。然后,我将检查数据库是否存在相同的MD5哈希值,如果找到,我就不会完成上传。然而,在
move_uploaded_file
文档中,我发现了这个评论:警告:如果您保存了一个md5_file哈希值以记录已上传的文件,并且这对于防止用户上传相同的文件很有用,请注意,在使用move_uploaded_file之后,md5_file哈希值会更改!当删除文件时,您无法找到相应的哈希值并将其从数据库中删除。
这是真的吗?在将文件从临时目录移动到永久位置后,文件在tmp目录中的MD5哈希值会更改吗?我不明白为什么会这样。无论如何,还有其他更好的方法来确保同一文件不会多次上传到文件系统吗?