dachshund Posted August 22, 2009 Share Posted August 22, 2009 hi, i'm trying to get this image upload form to check for and delete any file called 'profilepicture.jpg' in the folder '/images/upload/profiles/' . $row['id'] . '/profilepicture.jpg' but it always comes up with "can't open file". this code also doesn't continue to upload the image if the file 'profilepicture.jpg' doesn't exist. i hope that all makes sense? basically, i want the someones profile picture (which has been renamed profilepicture.jpg) to be deleted so the new one can take its place. here's my code <?php include "../template/header.php"; //delete file that already exists $parts = explode("/", dirname(__FILE__)); $myFile = implode("/", $parts) . '/images/upload/profiles/' . $row['id'] . '/profilepicture.jpg'; $fh = fopen($myFile, 'w') or die("can't open file"); fclose($fh); unlink($myFile); //Сheck that we have a file if((!empty($_FILES["uploaded_file"])) && ($_FILES['uploaded_file']['error'] == 0)) { //Check if the file is JPEG image and it's size is less than 350Kb $filename = basename($_FILES['uploaded_file']['name']); $ext = substr($filename, strrpos($filename, '.') + 1); if (($ext == "jpg") && ($_FILES["uploaded_file"]["type"] == "image/jpeg") && ($_FILES["uploaded_file"]["size"] < 350000)) { //user $userid = $_SESSION['uid']; $query = "SELECT * FROM users WHERE id = '$userid'"; $result = mysql_query($query); $row = mysql_fetch_assoc($result); //Determine the path to which we want to save this file unSet($parts[(count($parts) - 1)]); $filename = "profilepicture.jpg"; $newname = implode("/", $parts) . '/images/upload/profiles/' . $row['id'] . '/' . $filename; //Check if the file with the same name is already exists on the server if (!file_exists($newname)) { //Attempt to move the uploaded file to it's new place if ((move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $newname)) === true) { echo "It's done! The file has been saved as: ".$filename; } else { echo "Error: A problem occurred during file upload!" . ' ' . $newname; } } else { echo "Error: File ".$_FILES["uploaded_file"]["name"]." already exists"; } } else { echo "Error: Only .jpg images under 350Kb are accepted for upload"; } } else { echo "Error: No file uploaded"; } include "../template/footer.php"; ?> any help or suggestions would be much appreciated. Quote Link to comment https://forums.phpfreaks.com/topic/171437-check-if-file-exists-and-if-it-does-delete-it/ Share on other sites More sharing options...
ignace Posted August 22, 2009 Share Posted August 22, 2009 $parts = explode("/", dirname(__FILE__)); $myFile = implode("/", $parts) . Why first explode it and then re-build it again? $myFile = dirname(__FILE__) . will give you the same as exploding first and then implode it again. Do var_dump($myFile); before $fh = fopen($myFile, 'w') or die("can't open file"); Quote Link to comment https://forums.phpfreaks.com/topic/171437-check-if-file-exists-and-if-it-does-delete-it/#findComment-904104 Share on other sites More sharing options...
dachshund Posted August 22, 2009 Author Share Posted August 22, 2009 ah yeah i was missing the unSet part. ok so here is my code now <?php include "../template/header.php"; //user $userid = $_SESSION['uid']; $query = "SELECT * FROM users WHERE id = '$userid'"; $result = mysql_query($query); $row = mysql_fetch_assoc($result); //delete file that already exists $parts = explode("/", dirname(__FILE__)); unSet($parts[(count($parts) - 1)]); $myFile = implode("/", $parts) . '/images/upload/profiles/' . $row['id'] . '/profilepicture.jpg'; var_dump($myFile); $fh = fopen($myFile, 'w') or die("can't open file"); fclose($fh); unlink($myFile); //Сheck that we have a file if((!empty($_FILES["uploaded_file"])) && ($_FILES['uploaded_file']['error'] == 0)) { //Check if the file is JPEG image and it's size is less than 350Kb $filename = basename($_FILES['uploaded_file']['name']); $ext = substr($filename, strrpos($filename, '.') + 1); if (($ext == "jpg") && ($_FILES["uploaded_file"]["type"] == "image/jpeg") && ($_FILES["uploaded_file"]["size"] < 350000)) { //Determine the path to which we want to save this file unSet($parts[(count($parts) - 1)]); $filename = "profilepicture.jpg"; $newname = implode("/", $parts) . '/images/upload/profiles/' . $row['id'] . '/' . $filename; //Check if the file with the same name is already exists on the server if (!file_exists($newname)) { //Attempt to move the uploaded file to it's new place if ((move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $newname)) === true) { echo "It's done! The file has been saved as: ".$filename; } else { echo "Error: A problem occurred during file upload!" . ' ' . $newname; } } else { echo "Error: File ".$_FILES["uploaded_file"]["name"]." already exists"; } } else { echo "Error: Only .jpg images under 350Kb are accepted for upload"; } } else { echo "Error: No file uploaded"; } include "../template/footer.php"; ?> but when i try to upload an image it brings back string(86) "/images/upload/profiles/1/profilepicture.jpg" Error: A problem occurred during file upload! /images/upload/profiles/1/profilepicture.jpg any ideas why? thanks for all the help. Quote Link to comment https://forums.phpfreaks.com/topic/171437-check-if-file-exists-and-if-it-does-delete-it/#findComment-904179 Share on other sites More sharing options...
dachshund Posted August 22, 2009 Author Share Posted August 22, 2009 it did actually delete the file as well so that worked. it must just be the upload part following the delete. this worked fine prior to me adding any of the delete code though. Quote Link to comment https://forums.phpfreaks.com/topic/171437-check-if-file-exists-and-if-it-does-delete-it/#findComment-904187 Share on other sites More sharing options...
ignace Posted August 23, 2009 Share Posted August 23, 2009 $parts = explode("/", dirname(__FILE__)); unSet($parts[(count($parts) - 1)]); $myFile = implode("/", $parts) . '/images/upload/profiles/' . $row['id'] . '/profilepicture.jpg'; Is then the same as: $myFile = '../images/upload/profiles/' . $row['id'] . '/profilepicture.jpg'; Quote Link to comment https://forums.phpfreaks.com/topic/171437-check-if-file-exists-and-if-it-does-delete-it/#findComment-904364 Share on other sites More sharing options...
dachshund Posted August 23, 2009 Author Share Posted August 23, 2009 yeah i know but ../ doesn't work for some reason. Quote Link to comment https://forums.phpfreaks.com/topic/171437-check-if-file-exists-and-if-it-does-delete-it/#findComment-904425 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.