Adam IS
Adam IS

Reputation: 51

how to rename uploaded files if there's duplicated names

i'm having a small issue in the duplicated names. I want to auto rename any duplicated upload files, like numbering them.

or if i could make the name same with numbers, such as file1.jpg / file2.jpg for all uploaded files

here's my code

<?php

	include('connect-db.php');
  
	if (isset($_POST['submit'])) {
		

$filename=  $_FILES["imgfile"]["name"];
  if ((($_FILES["imgfile"]["type"] == "image/gif")|| ($_FILES["imgfile"]["type"] == "image/jpeg") || ($_FILES["imgfile"]["type"] == "image/png")  || ($_FILES["imgfile"]["type"] == "image/pjpeg")) && ($_FILES["imgfile"]["size"] < 20000000))



  {
    if(file_exists($_FILES["imgfile"]["name"]))
    {
      echo "File name exists.";
    }

    else
    {
      move_uploaded_file($_FILES["imgfile"]["tmp_name"],"photos/$filename");
    }


  }
 

		if (is_numeric($_POST['id'])) {
			$id = $_POST['id'];
			
			$id_photo= mysql_real_escape_string(htmlspecialchars($_POST['filename']));

			// check that firstname/lastname fields are both filled in
			
			if ($filename== '' ) {
				// generate error message
				$error = 'ERROR: Please fill in all required fields!';

echo("<meta http-equiv='refresh' content='0'>"); //Refresh by HTTP META

			} else {
				// save the data to the database
				mysql_query("UPDATE table SET id_photo='$filename' WHERE id='$id' ") or die(mysql_error());
				// once saved, redirect back to the view page

echo("<meta http-equiv='refresh' content='0'>"); //Refresh by HTTP META

			}

		} else {
			// if the 'id' isn't valid, display an error
			echo 'Error!';
		}
 
	}
	
	
	?>
	

Even the echo of if(file_exists($_FILES["imgfile"]["name"])) it's not working, i don't know why

Thank you very much before replying

Upvotes: 0

Views: 2125

Answers (1)

sanoj lawrence
sanoj lawrence

Reputation: 993

try this code this code will never get same name this code will rename file like 2jh5425h44u5h45h454k5image.jpg this is how it will save file so no need to worry about duplicate file i have added random name generator $newname = md5(rand() * time()); this will generate random name for your file

    <?php

include('connect-db.php');
$newname = md5(rand() * time());
if (isset($_POST['submit'])) {

    $filename = $_FILES["imgfile"]["name"];
    if ((($_FILES["imgfile"]["type"] == "image/gif") || ($_FILES["imgfile"]["type"] == "image/jpeg") || ($_FILES["imgfile"]["type"] == "image/png") || ($_FILES["imgfile"]["type"] == "image/pjpeg")) && ($_FILES["imgfile"]["size"] < 20000000)) {
        if (file_exists($_FILES["imgfile"]["name"])) {
            echo "File name exists.";
        } else {
            move_uploaded_file($_FILES["imgfile"]["tmp_name"], "photos/$newname . $filename");
        }
    }
    if (is_numeric($_POST['id'])) {
        $id = $_POST['id'];

        $id_photo = mysql_real_escape_string(htmlspecialchars($_POST['filename']));

        // check that firstname/lastname fields are both filled in

        if ($filename == '') {
            // generate error message
            $error = 'ERROR: Please fill in all required fields!';

            echo("<meta http-equiv='refresh' content='0'>"); //Refresh by HTTP META
        } else {
            // save the data to the database
            mysql_query("UPDATE table SET id_photo='$filename' WHERE id='$id' ") or die(mysql_error());
            // once saved, redirect back to the view page

            echo("<meta http-equiv='refresh' content='0'>"); //Refresh by HTTP META
        }
    } else {
        // if the 'id' isn't valid, display an error
        echo 'Error!';
    }
}
?>

if you need to rename only if file is duplicate here is answer Renaming duplicate files in a folder with php

Upvotes: 1

Related Questions