Rename image when uploading to server

I am trying to upload an image, but I want that if the image already exists, I need to rename the file. A problem in my code occurs when I try to load an image after renaming a file. part of the code where I ran into a problem. after renaming, if I repeat the name of the file it receives, but after that I cannot upload the image to the server

if(file_exists($target_file)) { $new_filename = uniqid() . '.' . $fileData['imageFileType']; rename($target_file, $new_filename); if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) { $name=basename( $_FILES["fileToUpload"]["name"]); echo $name; } else { echo "Sorry, there was an error uploading your file."; } } else { if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) { $name=basename( $_FILES["fileToUpload"]["name"]); echo $name; } else { echo "Sorry, there was an error uploading your file."; } } 

all the code that I have to upload the image,

 <?php require 'connection.php'; $target_dir = "catpic/"; $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]); $uploadOk = 1; $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION); // Check if image file is a actual image or fake image if(isset($_POST["submit"])) { $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]); if($check !== false) { //echo "File is an image - " . $check["mime"] . "."; $uploadOk = 1; } else { echo "File is not an image."; $uploadOk = 0; } } // Check file size if ($_FILES["fileToUpload"]["size"] > 500000) { echo "Sorry, your file is too large."; $uploadOk = 0; } // Allow certain file formats if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif" ) { echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed."; $uploadOk = 0; } // Check if $uploadOk is set to 0 by an error if ($uploadOk == 0) { echo "Sorry, your file was not uploaded."; // if everything is ok, try to upload file } else { if(file_exists($target_file)) { $new_filename = uniqid() . '.' . $fileData['imageFileType']; rename($target_file, $new_filename); if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) { $name=basename( $_FILES["fileToUpload"]["name"]); echo $name; } else { echo "Sorry, there was an error uploading your file."; } } else { if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) { $name=basename( $_FILES["fileToUpload"]["name"]); echo $name; } else { echo "Sorry, there was an error uploading your file."; } } } ?> 
+6
source share
1 answer

Missing path in $ new_filename

compare both declarations

 $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]); $new_filename = uniqid() . '.' . $fileData['imageFileType']; 

I am updating my answer according to your suggestion, trying to replace this section of your code

 $new_filename = uniqid() . '.' . $fileData['imageFileType']; rename($target_file, $new_filename); 

with

 $new_filename = $target_dir . uniqid() . '.' . $imageFileType; if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $new_filename)){ 

just add $ target_dir and just remove rename () as not required

basically what you did in the previous code when the file existed at boot time, you tried to rename the old file with rename (), which probably failed, and after that you tried to load a new file with the same conflicting name

+2
source

Source: https://habr.com/ru/post/987914/


All Articles