图片扩展名未显示在PHP文件上传中

时间:2019-01-12 04:01:36

标签: php image file upload

我正在使用这段代码来处理输入,以上传多个图像并调整其大小。它可以工作,但是有一件小事不想做。我要获取的扩展名没有显示在文件名中。

这是应该出现问题的代码段:

    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;
                }

            }
         }
     }
}

例如,在我的数据库中,现在保存的东西称为 1547265041_thump。

出了什么问题?

2 个答案:

答案 0 :(得分:1)

检查$ext是否得到扩展。 如果没有得到,请检查$_FILES['fileToUpload']['name']的读数。 您可以通过echo进行调试。

检查数据库字符长度。 希望对您有所帮助。

答案 1 :(得分:0)

$_FILES['fileToUpload']['name']似乎是一个数组,这很合逻辑,因为您可以一次上传多个图像。要遍历,我在foreach中添加了一个计数器以输出扩展。现在效果很好!