Php 正在上载具有随机名称但缺少扩展名的文件

Php 正在上载具有随机名称但缺少扩展名的文件,php,uploading,Php,Uploading,我试图制作一个上传脚本,所以当用户上传一些东西时,它会保存到上传文件夹中。上传图像时,我遇到了类似名称的问题,所以我尝试了下面给出的方法将文件重命名为随机数,但我遇到的问题是图像名称中缺少点() 旧脚本: move_uploaded_file($_FILES["image_file"]["tmp_name"], "uploads/" . $_FILES["image_file"]["name"]); 将文件重命名为随机数的新脚本: $newfilename = rand(1,99999

我试图制作一个上传脚本,所以当用户上传一些东西时,它会保存到上传文件夹中。上传图像时,我遇到了类似名称的问题,所以我尝试了下面给出的方法将文件重命名为随机数,但我遇到的问题是图像名称中缺少点(

旧脚本:

  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

您漏掉了点:

$newfilename = rand(1,99999) . '.' . end(explode(".",$_FILES["image_file"]["name"]));
基本上,您会生成一个随机数,添加一个点来分隔扩展名,然后将原始文件名逐点切片,并取最后一部分(应该是扩展名本身)。扩展没有点,您将它添加到您已经准备好的内容中

不要忘记,随机数不会生成唯一的文件名。您可能会覆盖旧文件。文件越多,发生这种情况的可能性就越大

为了避免这种情况,可以使用时间戳代替随机数(或与随机数一起使用)。这样,您可以确保文件名每秒都是唯一的:

$newfilename = time() . '_' . rand(100, 999) . '.' . end(explode(".",$_FILES["image_file"]["name"]));
时间戳和由下划线分隔的三个随机数应该可以。您漏掉了点:

$newfilename = rand(1,99999) . '.' . end(explode(".",$_FILES["image_file"]["name"]));
基本上,您会生成一个随机数,添加一个点来分隔扩展名,然后将原始文件名逐点切片,并取最后一部分(应该是扩展名本身)。扩展没有点,您将它添加到您已经准备好的内容中

不要忘记,随机数不会生成唯一的文件名。您可能会覆盖旧文件。文件越多,发生这种情况的可能性就越大

为了避免这种情况,可以使用时间戳代替随机数(或与随机数一起使用)。这样,您可以确保文件名每秒都是唯一的:

$newfilename = time() . '_' . rand(100, 999) . '.' . end(explode(".",$_FILES["image_file"]["name"]));
时间戳和由下划线分隔的三个随机数应该可以。您漏掉了点:

$newfilename = rand(1,99999) . '.' . end(explode(".",$_FILES["image_file"]["name"]));
基本上,您会生成一个随机数,添加一个点来分隔扩展名,然后将原始文件名逐点切片,并取最后一部分(应该是扩展名本身)。扩展没有点,您将它添加到您已经准备好的内容中

不要忘记,随机数不会生成唯一的文件名。您可能会覆盖旧文件。文件越多,发生这种情况的可能性就越大

为了避免这种情况,可以使用时间戳代替随机数(或与随机数一起使用)。这样,您可以确保文件名每秒都是唯一的:

$newfilename = time() . '_' . rand(100, 999) . '.' . end(explode(".",$_FILES["image_file"]["name"]));
时间戳和由下划线分隔的三个随机数应该可以。您漏掉了点:

$newfilename = rand(1,99999) . '.' . end(explode(".",$_FILES["image_file"]["name"]));
基本上,您会生成一个随机数,添加一个点来分隔扩展名,然后将原始文件名逐点切片,并取最后一部分(应该是扩展名本身)。扩展没有点,您将它添加到您已经准备好的内容中

不要忘记,随机数不会生成唯一的文件名。您可能会覆盖旧文件。文件越多,发生这种情况的可能性就越大

为了避免这种情况,可以使用时间戳代替随机数(或与随机数一起使用)。这样,您可以确保文件名每秒都是唯一的:

$newfilename = time() . '_' . rand(100, 999) . '.' . end(explode(".",$_FILES["image_file"]["name"]));
时间戳和由下划线分隔的三个随机数应该可以。将代码更改为:

$newfilename = rand(1,99999) . '.' . end(explode(".", $_FILES["image_file"]["name"]));
将代码更改为:

$newfilename = rand(1,99999) . '.' . end(explode(".", $_FILES["image_file"]["name"]));
将代码更改为:

$newfilename = rand(1,99999) . '.' . end(explode(".", $_FILES["image_file"]["name"]));
将代码更改为:

$newfilename = rand(1,99999) . '.' . end(explode(".", $_FILES["image_file"]["name"]));