如何将上传的文件保存到目录之前重命名?

下面是我用来上传文件到目录中的代码。 它工作正常。 我的主要问题是:

move_uploaded_file()是将上传的文件保存到目录中的文件,也是我的猜测, move_uploaded_file()是为其设置名称的文件。

我怎么能改变我的文件的名称为一个随机数字?

我试图这样做:

$allowedExts = array("gif", "jpeg", "jpg", "png"); $temp = explode(".", $_FILES["file"]["name"]); $extension = end($temp); if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/jpg") || ($_FILES["file"]["type"] == "image/pjpeg") || ($_FILES["file"]["type"] == "image/x-png") || ($_FILES["file"]["type"] == "image/png")) && ($_FILES["file"]["size"] < 100000) && in_array($extension, $allowedExts)) { if ($_FILES["file"]["error"] > 0) { echo "Return Code: " . $_FILES["file"]["error"] . "<br>"; } else { $fileName = $temp[0].".".$temp[1]; $temp[0] = rand(0, 3000); //Set to random number $fileName; if (file_exists("../img/imageDirectory/" . $_FILES["file"]["name"])) { echo $_FILES["file"]["name"] . " already exists. "; } else { move_uploaded_file($_FILES["file"]["tmp_name"], "../img/imageDirectory/" . $_FILES["file"]["name"]); echo "Stored in: " . "../img/imageDirectory/" . $_FILES["file"]["name"]; } } } else { echo "Invalid file"; } 

我试着改变$ _FILES [“file”] [“name”]这样的variables,并用$ fileNamereplace它; variables,以便可以存储新名称。

您可以通过更改move_uploaded_file的第二个参数中的文件名来简单地更改文件的名称。

代替

 move_uploaded_file($_FILES["file"]["tmp_name"], "../img/imageDirectory/" . $_FILES["file"]["name"]); 

使用

 $temp = explode(".", $_FILES["file"]["name"]); $newfilename = round(microtime(true)) . '.' . end($temp); move_uploaded_file($_FILES["file"]["tmp_name"], "../img/imageDirectory/" . $newfilename); 

更改为反映您的问题,将根据当前时间产生一个随机数,并附加最初上传文件的扩展名。

你猜对了 阅读手册页面move_uploaded_file 。 设置第二个参数,无论你想保存文件。

如果它不起作用,你的$fileName是有问题的。 请张贴您最近的代码。

你可以试试这个,

 $newfilename= date('dmYHis').str_replace(" ", "", basename($_FILES["file"]["name"])); move_uploaded_file($_FILES["file"]["tmp_name"], "../img/imageDirectory/" . $newfilename);