IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

La fonction move_uploaded_file & création de vignettes


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2019
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2019
    Messages : 101
    Points : 45
    Points
    45
    Par défaut La fonction move_uploaded_file & création de vignettes
    Image.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
     
    public function upload($files) {
     
            $upload_dir = IMAGE_DIR_PATH;
     
            foreach($files['upload']['error'] as $key => $error) {
     
                $error = 0;
     
                if($error == UPLOAD_ERR_OK) {
     
                    $tmp_name = $files['upload']['tmp_name'][$key];
                    $filename = $files['upload']['name'][$key];
     
                    $filename = $this->cleanText($filename);
                    $filename = strtolower($filename);
     
                    $type = $files['upload']['type'][$key];
                    $size = $files['upload']['size'][$key];
     
                    if($type == 'image/jpeg') {
     
                        if($size <= 10000000) {
     
                            if(move_uploaded_file($tmp_name, $upload_dir . $filename) === false) {
     
                                $error++;
                            }
                            else {
     
                                $this->createThumbnail($filename);
                            }
                        }
                        else {
     
                            $error++;
                        }
                    }
                    else {
     
                        $error++;
                    }
                }
            }
     
            if($error == 0) {
     
                return true;
            }
            else {
     
                return false;
            }
        }
     
    public function createThumbnail($filename) {
     
            $image = IMAGE_DIR_PATH . $filename;
            $vignette = THUMB_DIR_PATH . $filename;
     
            $size = getimagesize($image);
     
            $largeur = $size[0];
            $hauteur = $size[1];
     
            $largeur_max = 200;
            $hauteur_max = 200;
     
            $image_src = imagecreatefromjpeg($image);
     
            if($largeur > $largeur_max OR $hauteur > $hauteur_max) {
     
                if($hauteur <= $largeur) {
     
                    $ratio = $largeur_max / $largeur;
                }
                else {
     
                    $ratio = $hauteur_max / $hauteur;
                }
            }
            else {
     
                $ratio = 1; 
     
            }
     
            $image_destination = imagecreatetruecolor(round($largeur * $ratio), round($hauteur * $ratio));
     
            imagecopyresampled($image_destination, $image_src, 0, 0, 0, 0, round($largeur * $ratio),
                round($hauteur * $ratio), $largeur, $hauteur);
     
            if(!imagejpeg($image_destination, $vignette)) {
     
                $error_msg = 'la création de la vignette a echouée pour l\'image ' . $image;
     
                return $error_msg;
     
                exit;
            }
            else {
     
                return true;
            }
        }
     
    public function cleanText($filename) {
     
            $special = array(' ', '\'', 'á','à','â','ä','ã','å','ç','é','è','ê'
                ,'ë','í','ì','î','ï','ñ','ó','ò','ô','ö','õ','ú','ù','û','ü','ý','ÿ
                ','Á','À','Â','Ä','Ã','Å','Ç','É','È','Ê','Ë','Í','Ï','Î','Ì','Ñ','
                Ó','Ò','Ô','Ö','Õ','Ú','Ù','Û','Ü','Ý');
     
            $normal = array('_', '', 'a','a','a','a','a','a','c','e','e','e','e
                ','i','i','i','i','n','o','o','o','o','o','u','u','u','u','y','y','
                A','A','A','A','A','A','C','E','E','E','E','E','I','I','I','I','N',
                'O','O','O','O','O','U','U','U','U','Y');
     
            $result = str_replace($special, $normal, "c'áàâäã'AAåçéèêëíìîïñóòôöõúùûüýÿÁÀÂÄÃÅÇÉÈÊËÍÏÎÌÑÓÒÔÖÕÚÙÛÜÝ");
        }
    upload.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    require('../config.php');
    require('../class/Image.php');
     
    if(!empty($_FILES)) {
     
    	$image = new Image();
    	$images = $image->upload($_FILES);
     
    	if($images === true) {
     
    		$msg_success = '<p class="msg_success">Le chargement a réussi</p>';
    	}
    	else {
     
    		$msg_error = '<p class="msg_error">Le chargement a échoué</p>';
    	}
    }
     
    <h1>Upload</h1>
     
    <?php if(isset($msg_success)) echo $msg_success ?>
    <?php if(isset($msg_error)) echo $msg_error ?>
     
    <form id="uploadForm" action="" method="post" enctype="multipart/form-data">
    	<p>Ajoutez des images</p>
    	<input type="file" value="" name="upload[]" multiple="multiple">
    	<input id="uploadFormSubmit" name="uploadFormSubmit" type="submit">
    </form>
    Bonjour, aucun fichier télécharger ne se déplace sur le serveur et aucune vignette n'est crée -> Avertissement: move_uploaded_file (): le deuxième argument de la fonction copy () ne peut pas être un répertoire.

    Merci pour aide, bon dimanche

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Chomeur
    Inscrit en
    Octobre 2019
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Chomeur

    Informations forums :
    Inscription : Octobre 2019
    Messages : 19
    Points : 33
    Points
    33
    Par défaut
    Bonjour,

    Le warning parle de lui-même. c'est peut-être parce que tu déplaces un fichier et que la fonction pense que tu essayes de la renommer en deuxième paramètre. essaye ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    move_uploaded_file($_FILES['userfile']['tmp_name'], 'path'.$file['name'])
    EDIT : je crois qu'en plus, l'erreur est traité dans la doc PHP

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2019
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2019
    Messages : 101
    Points : 45
    Points
    45
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if(is_uploaded_file($tmp_name) === false {
     
    error++;
     
    }
    else {
     
    return true;
     
    }
    j'ai mis cette condition, le chargement à réussi mais le fichier ne s'est pas déplacé.

  4. #4
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2017
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2017
    Messages : 502
    Points : 770
    Points
    770
    Par défaut
    Bonsoir, voilà un bout de code qui envoie juste le fichier au serveur :

    Fichier html nommé : enregistrementImages.php
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    <!DOCTYPE html>
    <html>
      <head>
        <title >envoie image</title>
      </head>
      <body>
        <!--debut du formulaire -->
        <!--j'utilise la methode POST -->
        <!--mon fichier de traitement est nommé "envoieImages.php" -->
    		<form data-parsley-validate method="post" enctype="multipart/form-data" action="envoieImages.php">
         <label class="control-label" for="photo" >Photo</label>
            <!--champ de type="file" nommé photo (name="photo") -->
            <input type="file" placeholder="" name="photo" id="photo"  class="form-control">
             <!--mes boutons-->
            <input  type="reset" class="btn btn-danger" value="Annuler" >
             <!--Bouton de type (type="submit") nommé name="envoyer"-->
    				<input type="submit" class="btn btn-success" value="Envoyer" name="envoyer">
             <!--Quand je vais clicqué sur le bouton submit, il va appelé le fichier "envoieImages.php"-->
    		</form> 
    	</body>
    </html>



    Fichier de traitement nommé : envoieImages.php
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    <?php
      include'includes/functions.php';
    define('DB_HOST', 'localhost');
    define('DB_NAME', 'bd');//nom de ta base de données 'bd'
    define('DB_USERNAME', 'root');
    define('DB_PASSWORD', '');
     
    try{
     
    	$db = new PDO("mysql:host=".DB_HOST.";dbname=".DB_NAME, DB_USERNAME, DB_PASSWORD);
    	$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    } catch(PDOException $e){
    	die('Erreur: '.$e->getMessage());
    }
     
    /*Si le bouton nommé envoyer est cliqué*/
    if (isset($_POST['envoyer'])) {
     
      { 
    		try
    		{
     
    			//On enregistre la photo dans la base de données avec la requête préparée
    			$response = $db->prepare('INSERT INTO image(ImageTitreProprio) VALUES(?)');
    			$response->execute(array($Image = $_FILES['ImageTitreProprio']['name'],));
     
    		//je récupère la photo que je met dans la variable temporaire "$photo_tmp" d'apache  
                    $photo_tmp = $_FILES['Image']['tmp_name'];
     
                    /*je déplace le fichier dans le repertoire images de mon serveur
                    c'est conseillé d'enregistrer le nom du fichier dans la BD et nom le fichier*/
                    move_uploaded_file($photo_tmp,"../images/$Image");
     
    			/*On termine le traitement*/	
    			$response->closeCursor();
     
    	}catch(Exception $e)
    		{
    			echo 'Enregistrement echoué';
    			die('Error : '.$e->getMessage());
    		}
    	}
    //var_dump($insert);
    if ($response) {
    	echo "<script>alert('Enregistrement effectué avec succès! !')</script>";
      echo "<script>window.open('enregistrementImages.php','_self')</script>";
    }
    }
    ?>

    Cordialement.

Discussions similaires

  1. aide fonction tri heapsort (création du tas)
    Par Invité dans le forum C
    Réponses: 6
    Dernier message: 24/11/2009, 00h27
  2. [WD10]Création de vignettes ?
    Par Louis Griffont dans le forum WinDev
    Réponses: 6
    Dernier message: 15/02/2007, 10h29
  3. [ImageMagick] Création de vignette d'image à la volée
    Par falatop dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 31/10/2006, 15h13
  4. [Upload] la fonction move_uploaded_file
    Par oli-ola dans le forum Langage
    Réponses: 7
    Dernier message: 24/12/2005, 16h24
  5. [ImageMagick] Création de vignettes (images réduites)
    Par tom06440 dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 22/10/2005, 15h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo