Nour
Nour

Reputation: 143

image extension is not showing in PHP file-upload

I'm using this piece of code to handle an input for uploading multiple images, and resizing them as well. It works but there is one small thing that doesn't want to do its job. The extension that I'm trying to get is not showing up in the file's name.

Here is the piece of code where the problem should be:

    if(isset($_POST["submit"])) {
    if(is_array($_FILES)) { 
        foreach ($_FILES['fileToUpload']['tmp_name'] as $uploadedFile) { 
        //$uploadedFile = $_FILES['fileToUpload']['tmp_name'];
            if($uploadedFile <> ''){
                $sourceProperties = getimagesize($uploadedFile);
                $newFileName = time();
                $dirPath = "../images/";
                $ext = pathinfo($_FILES['fileToUpload']['name'], PATHINFO_EXTENSION);
                $imageType = $sourceProperties[2];

                switch ($imageType) {

                    case IMAGETYPE_PNG:
                        $imageSrc = imagecreatefrompng($uploadedFile); 
                        $tmp = imageResize($imageSrc,$sourceProperties[0],$sourceProperties[1]);
                        imagepng($tmp,$dirPath. $newFileName. "_thump.". $ext);
                        break;           

                    case IMAGETYPE_JPEG:
                        $imageSrc = imagecreatefromjpeg($uploadedFile); 
                        $tmp = imageResize($imageSrc,$sourceProperties[0],$sourceProperties[1]);
                        imagejpeg($tmp,$dirPath. $newFileName. "_thump.". $ext);
                        break;

                    case IMAGETYPE_GIF:
                        $imageSrc = imagecreatefromgif($uploadedFile); 
                        $tmp = imageResize($imageSrc,$sourceProperties[0],$sourceProperties[1]);
                        imagegif($tmp,$dirPath. $newFileName. "_thump.". $ext);
                        break;

                    default:
                        echo "<div class='alert alert-danger'>File is not an image.</div>";
                        exit;
                        break;
                }

            }
         }
     }
}

For an example, something it is now saving is called 1547265041_thump. in my database.

What is going wrong?

Upvotes: 1

Views: 803

Answers (2)

Nour
Nour

Reputation: 143

The $_FILES['fileToUpload']['name'] seems to be an array, which is logical since you can upload multiple images at once. To loop through, I added a counter to the foreach to output the extension. Now it works well!

Upvotes: 0

Check $ext getting extension or not. If it not getting check $_FILES['fileToUpload']['name'] reading or not. You can debug by echo them.

Check you database character length. Hope it helps.

Upvotes: 1

Related Questions