Reputation: 143
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
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
Reputation: 95
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