Есть ли разница между .JPG и .jpg?

приведенный ниже код генерирует миниатюру и создает сжатое изображение и загружает изображение.

if (!empty($_FILES)) {
    $tempFile = $_FILES['file']['tmp_name'];          //3             

    define ("MAX_SIZE","400");
    function getExtension($str) {
        $i = strrpos($str,".");
        if (!$i) { return ""; }
        $l = strlen($str) - $i;
        $ext = substr($str,$i+1,$l);
        return $ext;
    }

    $errors=0;

    if($_SERVER["REQUEST_METHOD"] == "POST") {
        $image =$_FILES["file"]["name"];
        $uploadedfile = $_FILES['file']['tmp_name'];

        if ($image) {
            $filename = stripslashes($_FILES['file']['name']);
            $extension = getExtension($filename);
            $extension = strtolower($extension);

            if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png") && ($extension != "gif")) {
                $change='<div class="msgdiv">Unknown Image extension </div> ';
                $errors=1;
            } else {
                $size=filesize($_FILES['file']['tmp_name']);

                if ($size > MAX_SIZE*1024) {
                    $change='<div class="msgdiv">You have exceeded the size limit!</div> ';
                    $errors=1;
                }


                if($extension=="jpg" || $extension=="jpeg" ) {
                    $uploadedfile = $_FILES['file']['tmp_name'];
                    $src = imagecreatefromjpeg($uploadedfile);
                } else if($extension=="png") {
                    $uploadedfile = $_FILES['file']['tmp_name'];
                    $src = imagecreatefrompng($uploadedfile);
                } else {
                    $src = imagecreatefromgif($uploadedfile);
                }
                echo $scr;
                list($width,$height)=getimagesize($uploadedfile);

                $newwidth=600;
                $newheight=($height/$width)*$newwidth;
                $tmp=imagecreatetruecolor($newwidth,$newheight);

                $newwidth1=125;
                $newheight1=($height/$width)*$newwidth1;
                $tmp1=imagecreatetruecolor($newwidth1,$newheight1);
                imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height);
                        imagecopyresampled($tmp1,$src,0,0,0,0,$newwidth1,$newheight1,$width,$height);

                $file_name = date('d') . date('M') . $_FILES['file']['name'];
                $filename = "upload/gallery/". $file_name;
                $filename1 = "upload/thumb/". $file_name;

                imagejpeg($tmp,$filename,100);
                imagejpeg($tmp1,$filename1,100);
                imagedestroy($src);
                imagedestroy($tmp);
                imagedestroy($tmp1);
            }
        }
    }     
}

Результатом является некоторое хранилище изображений с расширением .JPG или некоторое хранилище изображений с расширением .jpg. Но основная проблема заключается в том, что файлы с расширениями в верхнем регистре (в частности, .JPG) не открываются или не распознаются в фотогалерее Windows Live. Файлы .jpg работают должным образом. Что может быть причиной этой проблемы?


person JH_    schedule 23.01.2017    source источник
comment
абсолютно никакой разницы, кроме того, что некоторые плохо написанные программы не распознают JPG.   -  person Franz Gleichmann    schedule 23.01.2017
comment
Переименуйте его в нижний регистр, у вас могут быть проблемы, когда ваш сервер работает на Linux.   -  person ka_lin    schedule 23.01.2017
comment
Также вы можете заменить получатель расширения вашего файла на $ext = pathinfo($filename, PATHINFO_EXTENSION); Возможно, у вашего получателя расширения есть woopsy   -  person RiggsFolly    schedule 23.01.2017


Ответы (1)


Вы используете нижний регистр расширения перед всеми тестами на правильный тип расширения и т. д., но когда вы приходите, чтобы сохранить файл, вы используете все, что есть в необработанном виде $_FILES['file']['name']

$file_name = date('d') . date('M') . $_FILES['file']['name'];

Так что сделайте strtolower для необработанного имени файла, прежде чем сохранять файл.

$file_name = date('d') . date('M') . strtolower($_FILES['file']['name']);
person RiggsFolly    schedule 23.01.2017