Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to rename uploaded file before saving it into a directory?

Below is the code I used in order to upload files into a directory. It works fine. My main question is:

move_uploaded_file() is the one that saves the uploaded file into the directory, and it is also my guess that move_uploaded_file() is the one that sets the name for it.

How could I change the name of my file to a random number?

I have tried to do so below:

$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"; } 

I tried changing variables such as the $_FILES["file"]["name"] and replacing it with the $fileName; variable so that the new name can be stored.

like image 367
George Edward Portillo Avatar asked Sep 09 '13 19:09

George Edward Portillo


People also ask

Which method is used to Rename a file?

That's where the os. rename() method comes in. The os. rename() method allows you to rename an existing file in Python.

How do you Rename the file if already exists in PHP?

$fName. $i. $ext; } $i++; } return $file; } // check for which action should be taken if file already exist if (file_exists(UPLOAD_DIR . $fileName['name'])) { $updatedFileName = update_file_name($fileName['name']); move_uploaded_file( $fileName['tmp_name'], UPLOAD_DIR.

How can get upload file name in PHP?

ya it is possible. You can also do this before uploading the file basename() is enough for extracting name. Show activity on this post. The accepted answer doesn't prevent the file upload, it simply provides a way to get the file name independent of the file contents.


1 Answers

You can simply change the name of the file by changing the name of the file in the second parameter of move_uploaded_file.

Instead of

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

Use

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

Changed to reflect your question, will product a random number based on the current time and append the extension from the originally uploaded file.

like image 191
Ben Fortune Avatar answered Oct 21 '22 16:10

Ben Fortune