Which File to "unlink"?

From another discussion…

Without posting my entire script here, which file(s) should I be deleting?

Towards the top of my script I have…


	if (empty($errors)){
		// Valid Form Data.
		if (empty($_FILES['userPhoto']['tmp_name'])){
			// No File.
			$errors['upload'] = 'Choose a File.';

		}else{
			// File exists.
			$tempFile = $_FILES['userPhoto']['tmp_name'];
		}

	}else{
		// Invalid Form Data.
		// Drop through to display Errors.

	}//End of CHECK FOR FILE

In a lot of my “upload.php” script I use $tempFile to check if the uploaded photo is “clean”.

But then once I start working with GD, I am working a lot with functions which create an “Image Resource Identifier”.

So what about these snippets of code…


	$origImage = @imagecreatefromgif($tempFile);


	$newTrueColorImage = @imagecreatetruecolor($newWidth, $newHeight);


	$resizedImage = @imagecopyresampled($newTrueColorImage, $origImage, 0, 0, 0, 0, $newWidth, $newHeight, $origWidth, $origHeight);


	$newPhoto = @imagegif($newTrueColorImage, $newFilePath);

Follow me?? :-/

Based on my understanding of things, it seems like I need to delete either $_FILES or $_FILES[‘userPhoto’][‘tmp_name’] at the very end of my script like this…


unlink($_FILES)

or


unlink($_FILES['userPhoto']['tmp_name'])

But what about the intermediary “Image Resource Identifiers”??

And maybe there are some other files I am missing?? :-/

Sincerely,

Debbie

As far as I can tell, all bar $newPhoto are memory-resident and are trashed when garbage collection runs. And even $newPhoto is really only a handle/reference to the new photo - the actual file is physycally saved at $newFilepath location.

So to answer your question (I think), you only need to unlink the the temp file. :slight_smile:

$_FILES is an array. You can’t unlink an array as that doesn’t make any sense. So yes, you would need to delete the temp file.

Based on the “unlink” in the PHP Manual, I’m a little unsure of what to do as far as error-handling?! :-/

Is this code sufficient…


	switch ($imageType){
		case IMAGETYPE_GIF:
			$newPhoto = @imagegif($newTrueColorImage, $newFilePath);
			break;

		case IMAGETYPE_JPEG:
			$newPhoto = @imagejpeg($newTrueColorImage, $newFilePath);
			break;

		case IMAGETYPE_PNG:
			$newPhoto = @imagepng($newTrueColorImage, $newFilePath);
			break;

		default:
			$newPhoto = FALSE;
	}

//NEW
	// Delete Temporary File.
	unlink($_FILES['userPhoto']['tmp_name']);

Sincerely,

Debbie

Yes

Okay, thanks for the help, everyone!!

Debbie