0

i have an upload script i borrowed and changed a few bits, the echos are commented out as the final output is a pdf.

I have two questions, first one is the important one, why wont it allow me to upload .jpeg? I can upload .png and .jpg fine?!

$target_dir = "../uploads/";
$target_file = $target_dir . basename($_FILES["brakeTestPic"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["brakeTestPic"]["tmp_name"]);
    if($check !== false) {
        //echo "File is an image - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        //echo "File is not an image.";
        $uploadOk = 0;
    }
}
// Check if file already exists
if (file_exists($target_file)) {
    //echo "Sorry, file already exists.";
    $uploadOk = 0;
}
// Check file size
if ($_FILES["brakeTestPic"]["size"] > 5000000000000000) {
    //echo "Sorry, your file is too large.";
    $uploadOk = 0;
}
// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && 
    $imageFileType != "jpeg" && $imageFileType != "gif" ) 
{

    //echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
    $uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
    //echo "Sorry, your file was not uploaded.";
    // if everything is ok, try to upload file
} else {
    $temp = explode(".", $_FILES["brakeTestPic"]["name"]);
    $newfilename = round(microtime(true)) .'1'. '.' . end($temp);
    move_uploaded_file($_FILES["brakeTestPic"]["tmp_name"], $target_dir . 
    $newfilename);
    $braketestpiclocation = $target_dir . $newfilename;
};

EDIT - i have deleted the second question which was a duplicate..

RiggsFolly
  • 93,638
  • 21
  • 103
  • 149
Brent Hobson
  • 33
  • 1
  • 6

1 Answers1

0

I ran your code, and everything works fine. Check again file you're uploading. Also, you can change condition for checking file format to:

if( ! in_array($imageFileType, ['jpg', 'jpeg', 'gif', 'png']) ) {

}

It's simpler and more readable.

My data from $_FILES:

Array ( 
   [brakeTestPic] => Array ( 
      [name] => Deski.JPEG 
      [type] => image/jpeg 
      [tmp_name] => /private/var/tmp/phpL8CKhq 
      [error] => 0 
      [size] => 21746
    )
)

Remember to add enctype="multipart/form-data" to your form tag.

Daniel
  • 2,621
  • 2
  • 18
  • 34