0 votes

Problème de téléchargement avec PHP : La vignette reprend le nom de l'image.

J'ai le modèle suivant (codeigniter) code pour télécharger l'image et la vignette.

Cependant le résultat du chemin de l'image devient, images/confort_big.jpg et images/confort_big.jpg.jpg.

L'image miniature reprend le nom de l'image et ajoute .jpg.

Je télécharge images/confort_thumb.jpg pour le pouce.

Quelqu'un peut-il me dire ce qui ne va pas ?

if ($_FILES){
        $config['upload_path'] = './images/';
        $config['allowed_types'] = 'gif|jpg|png';
        $config['max_size'] = '200';
        $config['remove_spaces'] = true;
        $config['overwrite'] = false;
        $config['max_width']  = '0';
        $config['max_height']  = '0';

        $this->load->library('upload', $config);  
        if (strlen($_FILES['image']['name'])){
            if(!$this->upload->do_upload('image')){
                $this->upload->display_errors();
                exit();
            }
            $image = $this->upload->data();
            if ($image['file_name']){
                $data['image'] = "images/".$image['file_name'];
            }
        }

        if (strlen($_FILES['thumbnail']['name'])){
            if(!$this->upload->do_upload('thumbnail')){
                $this->upload->display_errors();
                exit();
            }
            $thumb = $this->upload->data();
            if ($thumb['file_name']){
                $data['thumbnail'] = "images/".$thumb['file_name'];
            }
        }
    }

1voto

Ally Points 1397

J'ai jeté un coup d'œil rapide à Classe de téléchargement de fichiers dans le guide de l'utilisateur
Dans les tableaux de préférences, il est indiqué :

Remarque : le nom du fichier ne doit pas comporter d'extension.

Donc je pense que vous demandez à l'utilisateur de nommer le fichier

$config['file_name'] = "User defined";

ou supprimer l'extension de manière programmatique. Puisque vous connaissez et listez déjà les extensions, vous pourriez faire

$types = array(".gif",".jpg",".png"); 
$image['file_name'] = str_replace($types , "", $image['file_name'] );

0voto

Avinash Points 1601

Votre problème est que lorsque vous créez une vignette, vous transmettez l'image complète.

Cela ajoutera donc une autre extension à celle-ci.

Utilisez le code ci-dessous pour supprimer l'extension du nom de fichier.

<?php 
    $filename=$image['file_name'];

    $file_name_with_dot = substr($filename,0, strrpos($filename, '.') + 1);

    $only_file_name = substr($file_name_with_dot,0,strlen($file_name_with_dot)-1);
?>

Passez maintenant ceci $only_file_name variable à votre fonction de pouce..

Il est préférable d'utiliser la création automatique de vignettes à partir de l'image principale.

J'espère que cela vous aidera.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X