我正在尝试制作一个上传脚本,因此当用户上传某些内容时,它会保存到uploads文件夹中。我在上传图片时遇到类似名称的问题,所以我尝试了下面给出的方法将文件重命名为随机数,但我遇到的问题是图像名称中缺少点(.
)。
旧脚本:
move_uploaded_file($_FILES["image_file"]["tmp_name"],
"uploads/" . $_FILES["image_file"]["name"]);
将文件重命名为随机数的新脚本:
$newfilename = rand(1,99999) . end(explode(".",$_FILES["image_file"]["name"]));
move_uploaded_file($_FILES["image_file"]["tmp_name"], "uploads/" . $newfilename);
我想要像这样的文件名
41150.jpg
但它保存了像41150jpg
答案 0 :(得分:3)
你错过了点:
$newfilename = rand(1,99999) . '.' . end(explode(".",$_FILES["image_file"]["name"]));
基本上你生成一个随机数,添加一个点来分隔扩展,然后用点切片原始文件名并取最后一部分(应该是扩展本身)。扩展名没有点,您可以将其添加到您已准备好的内容中。
不要忘记随机数不会生成唯一的文件名。您可能会覆盖旧文件。你拥有的文件越多,就会发生这种情况。
为避免这种情况,您可以使用随机数字(或与之一起)的时间戳。通过这种方式,您将确保文件名的每一秒都是唯一的:
$newfilename = time() . '_' . rand(100, 999) . '.' . end(explode(".",$_FILES["image_file"]["name"]));
时间戳和由下划线分隔的三个随机数应该没问题。
答案 1 :(得分:0)
将代码更改为:
$newfilename = rand(1,99999) . '.' . end(explode(".", $_FILES["image_file"]["name"]));