PHP文件重命名

Ibr*_*mar 8 php

我有一个表单,管理员将三个不同维度的图片上传到三个不同的指定目录.现在要确保我没有遇到重复文件名的问题,我实现像php将比较上传的文件名,它将检查该文件名是否存在于指定目录中,如果是,那么它将回显错误并停止脚本执行.

现在,我的一位朋友告诉我,要求管理员手动重命名图片文件并要求他们处理文件重复问题是非常糟糕的.他建议的解决方案是自动重命名文件,然后将其存储在数据库中,然后将其定向到目录.

我很困惑我应该给重命名的文件什么组合,并确保它将保持唯一的文件名更准确我希望你理解我的目录结构

正如我所说,管理员将上传三个图片文件

a)标题图片b)简要图片c)细节图片

并且所有三个图片文件将被移动到不同的相应目录,如标题图片转到标题目录,依此类推.

我正在使用下面的脚本当前只是为了在数据库中使用varchar移动和存储文件名.

$ns_pic_title_loc= $_FILES["ns_pic_title"]["tmp_name"];
$ns_pic_title_name = $_FILES["ns_pic_title"]["name"];
move_uploaded_file($ns_pic_title_loc, $ns_title_target.$ns_pic_title_name) or die(mysql_error());
Run Code Online (Sandbox Code Playgroud)

这只是示例代码我没有包括我正在使用的验证功能.我想我想要重命名所有文件

a)在标题目录中,文件应存储为.title_1.jpg title_2.jpg title_3.jpg title_4.jpg

等等

和其他图片一样.我怎么做?我用什么功能来实现我的目标.如果这不是重命名文件的好方法,我将不胜感激任何重命名文件的建议.

提前致谢

jan*_*zki 2

好吧,这是一个可能的解决方案:

  1. 获取上传的文件名$_FILES["ns_pic_title"]["name"]和单独的扩展名,或者如果我们只讨论图像文件,则获取图像类型getimagesize($_FILES["ns_pic_title"]["tmp_name"])
  2. 检查数据库中图像记录的最大 ID 并设置$file_name变量'title_'.($max_id + 1)
  3. 此时你应该有 $file_name 和 $file_extension ,所以这样做move_uploaded_file($_FILES["ns_pic_title"]["tmp_name"], $ns_title_target.$file_name.'.'.$file_extension)

希望这是有道理的并且有帮助。