Smudly Posted July 3, 2010 Share Posted July 3, 2010 I am working on a section for users to upload a picture/avatar on their profile. I noticed that if I have two different images with the same file name, and upload both of them, the first one is overwritten. I am trying to write a script that will find if file exists, randomize a set of numbers and letters, and use those as the files' new name. In my code below, you can see that I am trying to replace the $name variable with this new set of characters. The problem is, that the name has the extension at the end of it as well. So this would cause an issue. So depending on what type of file the user is trying to submit, the extension will be concatenated at the end of the file name, then will upload it. I'm getting no errors, and am stuck on what to do from here. The function creates a random string of characters for the name. <?php $upload = $_POST['upload']; if ($upload) { // Name of file $name = $_FILES["image"]["name"]; // Type of file (video/avi) or image/jpg, etc $type = $_FILES["image"]["type"]; //size of file $size = $_FILES["image"]["size"]; //stores file in a temporary location $temp = $_FILES["image"]["tmp_name"]; // if there is an error $error = $_FILES["image"]["error"]; echo $type; function genRandomString() { $length = 10; $characters = '0123456789abcdefghijklmnopqrstuvwxyz'; $string = ''; for ($p = 0; $p < $length; $p++) { $string .= $characters[mt_rand(0, strlen($characters))]; } return $string; } if ($error > 0) { $uploaderror = "An error occured. Please try again."; } else { if ($type=="image/jpeg" || $type=="image/png" || $type=="image/gif" || $type=="image/bmp" || $type=="image/jpeg") { if ($size <= 5242880) { if(file_exists($name)){ $name = genRandomString($string); } else { move_uploaded_file($temp, "avatars/".$name); $success = "Upload Complete!"; } } else{ $uploaderror = "Your image must be less than 5 megabytes."; } } else { die("That format is not allowed!"); } } } ?> <html> <h1>Upload a File</h1> <form action="upload.php" method="POST" enctype="multipart/form-data"> <input type="file" name="image"><br /> <input type="submit" name="upload" value="Upload"><br /> <?php echo $success, $uploaderror; ?> </form> </html> Link to comment https://forums.phpfreaks.com/topic/206589-if-file-exists-trouble/ Share on other sites More sharing options...
ChemicalBliss Posted July 3, 2010 Share Posted July 3, 2010 if(file_exists($name)){ shouldn't it be: if(file_exists("avatars/".$name)){ ? -cb- Link to comment https://forums.phpfreaks.com/topic/206589-if-file-exists-trouble/#findComment-1080543 Share on other sites More sharing options...
Smudly Posted July 3, 2010 Author Share Posted July 3, 2010 Ah yes, that is right. I changed the code to what you suggested, and that part is now working. EDIT: It has been fixed. Thanks for your help! Link to comment https://forums.phpfreaks.com/topic/206589-if-file-exists-trouble/#findComment-1080544 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.