Delete Image Files From Server

IRHM picture IRHM · May 8, 2012 · Viewed 16.2k times · Source

I wonder whether someone may be able to help me please.

I've put together this page which allows users to view their uploaded images in a gallery format.

I'm now wanting to add the delete functionality to each image. I've created the button and the Javascript behind it, but I'm really not sure how to link the 'button click' with the actual physical deletion of the file.

The images aren't stored in a database but are in two folder locations on my server, in the following structure:

UploadedFiles/username/locationid/imagename and

UploadedFiles/username/locationid/Thumbnails/imagename

I'm relatively new to PHP and I'm now reaching the limits of my knowledge, but certainly willing to learn. From the documentation I've read I think I'm correct in saying that the unlink method is the correct command to use?

But what I'm finding really difficult is telling the code to find the folders with the username and locationid folders which match the current username and locationid and then delete the files which match the $source name variable.

I just wondered whether someone could perhaps provide some guidance please on how I may go about this.

Many thanks and kind regards

Answer

Patrick Moore picture Patrick Moore · May 8, 2012

If you can pass the username, locationid, and imagename variables to your script, you can delete the files using unlink():

$path = 'UploadedFiles/' . $username . '/' . $locationid . '/';

unlink( $path . $imagename );
unlink( $path . 'Thumbnails/' . $imagename );

Because you are interacting with your file system, you'll want to be sure and sanitize the variables (prevent someone from using ../../../ to get to unwanted parts of your file system).

$username = str_replace( array( '..', '/', '\\', ':' ), '', $username );
$imagename = str_replace( array( '..', '/', '\\', ':' ), '', $imagename );
$locationid= str_replace( array( '..', '/', '\\', ':' ), '', $locationid );