PHP MD5文件名

时间:2016-02-17 01:33:02

标签: php file upload md5

我有一个上传脚本,并修复了几件事的上传,我想md5加密文件名。这是我正在使用的php脚本的顶部。

  

$target_dir = "file_dir/"; $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]); $uploadOk = 1; $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);

我试图像这样使用md5()方法

  

md5($target_dir . basename($_FILES["fileToUpload"]["name"]));

哪个不起作用。刚回来是一个错误。 如果你们在这个脚本中需要更多的代码来帮助我,请在评论中告诉我,我将制作我的脚本的虚拟副本。提前谢谢:D

2 个答案:

答案 0 :(得分:0)

您正尝试在不存在的路径上使用basename:$ _FILES [“fileToUpload”] [“name”]。这只是文件名,而不是服务器中的路径。

您可以将其用于唯一文件名:

md5($target_dir . '/' . $_FILES["fileToUpload"]["name"])

显然,您需要确保文件名始终是唯一的。如果这不是一个选项,那么你也可以使用,这更有可能是唯一的:

md5($target_dir . '/' . $_FILES["fileToUpload"]["tmp_name"])

如果你想确保它始终是唯一的,那么这将起作用:

md5($target_dir . '/' . $_FILES["fileToUpload"]["tmp_name"] . time())

有几种选择。这取决于你想要用它们做什么。

答案 1 :(得分:0)

迟到的答案,但希望它可以帮到你。 您正尝试将该目录与该文件一起加密。这必定会导致错误。

您应该只加密文件并添加文件扩展名:

$file_ext = strrchr($_FILES["fileToUpload"]["name"], '.');
$target_file = md5(basename($_FILES["fileToUpload"]["name"])).$file_ext;

然后传递它以移动 move_uploaded_file

move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_dir.$target_file)