Проблема с расширением загрузки файлов изображений PHP - PullRequest
0 голосов
/ 17 декабря 2009

У меня есть php-скрипт для работы с загруженными изображениями.

работает нормально, если я загружаю файл, например file.jpg.

Но у меня возникнут проблемы, если я попытаюсь загрузить файл .JPG. Даже если тот же файл переименован.

Код:

if(isset($_FILES["arq"])){ 
    @getimagesize($_FILES['arq']['tmp_name']) or $err=5; 
    ($_FILES['arq']['error']==0) or $err=$_FILES['arq']['error'];


    if ($err==0){
        $dir = "./img/".$_SESSION['estudante']."/";
        if (!is_dir($dir)){mkdir($dir);}
        $filename = substr(md5(uniqid(rand(), true)),0,20) . ".";
        $filename .= pathinfo($_FILES["arq"]["name"], PATHINFO_EXTENSION);
        $fotourl = $dir . basename($filename);//$_FILES["arq"]["name"]);
        move_uploaded_file($_FILES["arq"]["tmp_name"], $fotourl);
        //resize e cira thumbnails
        resizeimg($fotourl, 320,204);   //editfoto
        resizeimg($fotourl, 137,87);    //album
        resizeimg($fotourl, 200,0);     //home
        resizeimg($fotourl, 148,0);     //perfil
        resizeimg($fotourl, 60,60);     //thumbnail
        resizeimg($fotourl, 100,0);     //iframe perfil
        resizeimg($fotourl, 530, 530);  //slide
        resizeimg($fotourl, 330, 0);    //i slide
        //registra no BD
        $sql="INSERT INTO fotos (estudante, url) VALUES ('".$_SESSION['estudante']."', '$fotourl')";
        mysql_query($sql);
        //retorna o id da foto
        $fotoid=mysql_insert_id();
        //notifica adms somente
        $sql="select estudante from administradores";
        $adms=mysql_query($sql);
        while ($ar=mysql_fetch_assoc($adms)){
            $msg="O usuário <a href=\"perfil.php?id=$_SESSION[estudante]\">".nomeapelido($_SESSION['estudante'])."</a> inseriu uma nova <a href='fotoslide.php?fotoid=$fotoid'>imagem</a>.";
            $sql="insert into mensagens (msgde, msgpara, msgmsg) values (5, $ar[estudante], '$msg')";   // 5=cadastro do 'user' sistema
            mysql_query($sql);
            //echo "$sql\n";
        }
        mysql_free_result($adms);
    }
}

1 Ответ

1 голос
/ 17 декабря 2009

Вы должны иметь возможность просто переименовать расширение в нижний регистр при перемещении файла. Если действительно важно сохранить фактический регистр расширения исходного файла, достаточно легко сохранить его в переменной до применения strtolower, передать его в функцию imgresize и использовать его для расширения, когда измененный размер img равен Сохраненный.

$filename .= strtolower(pathinfo($_FILES["arq"]["name"], PATHINFO_EXTENSION));
$fotourl = $dir . basename($filename);//$_FILES["arq"]["name"]);
move_uploaded_file($_FILES["arq"]["tmp_name"], $fotourl);
...