Jump to content

check if file exists and if it does delete it


dachshund

Recommended Posts

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);

//&#1057;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.

 

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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);

//&#1057;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.

 

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.