Jump to content

Image upload headache


merylvingien

Recommended Posts

Hi Fellas, having a bit of problem with a image upload script.

 

When i test this, if i upload a jpg image everything is fine, but if i try a different file type then i get a mess of hell going on. Apache crashes but the file is still uploaded.

 

I am assuming that i am missing a part out, but really need some help to complete this.

 

The code i have is this (cut and pasted chunks from various locations and hashed together):

 

<?php

//This is the directory where images will be saved

if ($_FILES['photo']['size'] > 0)
{
$fileName = ($_FILES['photo']['name']);
$ext      = substr(strrchr($fileName, "."), 1); 
$target = "uploads/";
$randName = md5(rand() * time());
$target = $target . $randName . '.' . $ext;

}



//Example #2 Resampling an image proportionally
function ResizeJPEG($filename, $width, $height){
   list($width_orig, $height_orig) = getimagesize($filename);
   
   $ratio_orig = $width_orig/$height_orig;
   
   if ($width/$height > $ratio_orig) {
      $width = $height*$ratio_orig;
   } else {
      $height = $width/$ratio_orig;
   }
   
   $image_p = imagecreatetruecolor($width, $height);
   $image = imagecreatefromjpeg($filename); //JPEG
   imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
   return imagejpeg($image_p, $filename, 100); //JPEG
}



//Writes the photo to the server
if(move_uploaded_file($_FILES['photo']['tmp_name'], $target))
{

//Tells you if its all ok
echo "The file ". basename( $_FILES['photo']['name']). " has been uploaded, and your information has been added to the directory";
ResizeJPEG($target, 200, 200);
}
else {

//Gives and error if its not
echo "Sorry, there was a problem uploading your file.";
}
?>

 

I either need to prevent users from uploading anything but a jpg, or allow them to upload any image type, i am not really fussed either way.

 

Any help would be appreciated  ;)

 

Link to comment
https://forums.phpfreaks.com/topic/187723-image-upload-headache/
Share on other sites

Try this, it basically checks the file type and if its not jpeg it stops the script

<?php
//This is the directory where images will be saved
if ($_FILES['photo']['size'] > 0){
$fileName = ($_FILES['photo']['name']);
$ext      = substr(strrchr($fileName, "."), 1);
$target = "uploads/";
$randName = md5(rand() * time());
$target = $target . $randName . '.' . $ext;

}
//Added
$allowedType = array("image/pjpeg","image/jpeg");
if(!in_array($_FILES["photo"]["type"],$allowedType)){
echo "Invalid file type";
exit;
}

//Writes the photo to the server
if(move_uploaded_file($_FILES['photo']['tmp_name'], $target)){
//Tells you if its all ok
echo "The file ". basename( $_FILES['photo']['name']). " has been uploaded, and your information has been added to the directory";
ResizeJPEG($target, 200, 200);
}else {
//Gives and error if its not
echo "Sorry, there was a problem uploading your file.";
}

//Example #2 Resampling an image proportionally
function ResizeJPEG($filename, $width, $height){
list($width_orig, $height_orig) = getimagesize($filename);

$ratio_orig = $width_orig/$height_orig;

if ($width/$height > $ratio_orig) {
	$width = $height*$ratio_orig;
} else {
	$height = $width/$ratio_orig;
}

$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($filename); //JPEG
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
return imagejpeg($image_p, $filename, 100); //JPEG
}

?>

Archived

This topic is now archived and is closed to further replies.

×
×
  • 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.