php - para - ¿Cómo renombrar el archivo cargado antes de guardarlo en un directorio?
renombrar directorio linux (3)
A continuación se muestra el código que utilicé para cargar archivos en un directorio. Funciona bien. Mi pregunta principal es:
move_uploaded_file () es el que guarda el archivo cargado en el directorio, y también creo que move_uploaded_file () es el que le asigna el nombre.
¿Cómo podría cambiar el nombre de mi archivo a un número aleatorio?
He intentado hacerlo a continuación:
$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";
}
Traté de cambiar variables como $ _FILES ["file"] ["name"] y reemplazarlas con $ fileName; variable para que el nuevo nombre pueda ser almacenado.
Adivinas correctamente. Lea la página del manual para move_uploaded_file
. Establezca el segundo parámetro donde desee guardar el archivo.
Si no funciona, hay algo mal con su $fileName
. Por favor publique su código más reciente.
Puedes probar esto,
$newfilename= date(''dmYHis'').str_replace(" ", "", basename($_FILES["file"]["name"]));
move_uploaded_file($_FILES["file"]["tmp_name"], "../img/imageDirectory/" . $newfilename);
Simplemente puede cambiar el nombre del archivo cambiando el nombre del archivo en el segundo parámetro de move_uploaded_file
.
En lugar de
move_uploaded_file($_FILES["file"]["tmp_name"], "../img/imageDirectory/" . $_FILES["file"]["name"]);
Utilizar
$temp = explode(".", $_FILES["file"]["name"]);
$newfilename = round(microtime(true)) . ''.'' . end($temp);
move_uploaded_file($_FILES["file"]["tmp_name"], "../img/imageDirectory/" . $newfilename);
Modificado para reflejar su pregunta, producirá un número aleatorio basado en la hora actual y agregará la extensión desde el archivo originalmente cargado.