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

Bibliothèques et frameworks PHP Discussion :

FPDI Ajout d'une image avec $_FILES


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Obervateur de nuage 2.3
    Inscrit en
    Mars 2020
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : Bahamas

    Informations professionnelles :
    Activité : Obervateur de nuage 2.3

    Informations forums :
    Inscription : Mars 2020
    Messages : 46
    Points : 23
    Points
    23
    Par défaut FPDI Ajout d'une image avec $_FILES
    Bonjour

    J'ai vu cette conversation aussi

    Le but de mon code est d'ajouter une image dans un pdf préfait.
    J'utilise FPDI.
    Pour cela, je saisis une image dans un formulaire html classique, puis je le récupère avec $_FILESJe teste l’existence de mon image comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     $image = tempnam(sys_get_temp_dir(), $_FILES["fichier"]["name"]);
    if (!file_exists($image)) {
       var_dump("Erreur 22.01 : le fichier n'existe pas");
       die();
    }
    var_dump( $image); //me retourne string(53) "/tmp/Capture d’écran_2022-02-03_09-06-11.png1JCvjg"
     die();
    Pourquoi y a t-il des caractères après l'extension? (.png)

    Je passe outre, et je continue mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $pdf = new Fpdi();
    $pdf->AddPage();
    $pdf->setSourceFile('a.pdf');
    $page = $pdf->importPage(1);
    $pdf->useTemplate($page);
    $pdf->Image($image,10,10,-300);
    Là, j'ai une erreur dans le log php :
    PHP Fatal error: Uncaught Exception: FPDF error: Unsupported image type: pngtxvkeq in /var/www/html/StatArbitrage/fpdf/fpdf.php:271\nStack trace:\n#0 /var/www/html/StatArbitrage/fpdf/fpdf.php(884): FPDF->Error()\n#1 /var/www/html/StatArbitrage/rapport_generateur/generateur.inc.php(103): FPDF->Image()\n#2 {main}\n thrown in /var/www/html/StatArbitrage/fpdf/fpdf.php on line 271, referer: http://localhost/StatArbitrage/rapport_generateur.html
    Cette erreur renvoie à cette ligne $pdf->Image($image,10,10,-300);Je comprends le message d'erreur.

    J'ai fait un test avec un lien"en dur' et tout fonctionne bien, l'image est bien incluse
    $pdf->Image("/home/.../Téléchargements/Capture d’écran_2022-02-03_09-06-11.png",10,10,-300);Du coup, j'ai essayé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     $image = tempnam(sys_get_temp_dir(), $_FILES["fichier"]["name"]);
      if (!file_exists($image)) {
        var_dump("Erreur 22.01 : le fichier n'existe pas");
    	die();
    } 
     $image =  substr($image, 0, -6);
    $pdf->Image($image,10,10,-300);
    mais
    PHP Fatal error: Uncaught Exception: FPDF error: Can't open image file: /tmp/Capture d\xe2\x80\x99\xc3\xa9cran_2022-02-03_09-06-11.png in /var/www/html/StatArbitrage/fpdf/fpdf.php:271\nStack trace:\n#0 /var/www/html/StatArbitrage/fpdf/fpdf.php(1261): FPDF->Error()\n#1 /var/www/html/StatArbitrage/fpdf/fpdf.php(885): FPDF->_parsepng()\n#2 /var/www/html/StatArbitrage/rapport_generateur/generateur.inc.php(101): FPDF->Image()\n#3 {main}\n thrown in /var/www/html/StatArbitrage/fpdf/fpdf.php on line 271, referer: http://localhost/StatArbitrage/rapport_generateur.html
    J'avoue que je sèche. D'où vient ce problème d'ecodage?

    Pour tester, j'ai supprimé tous les caractères type "'" et "é", mais même problème

    PHP Fatal error: Uncaught Exception: FPDF error: Can't open image file: /tmp/Capture decran_2022-02-03_09-06-11.png in /var/www/html/StatArbitrage/fpdf/fpdf.php:271\nStack trace:\n#0 /var/www/html/StatArbitrage/fpdf/fpdf.php(1261): FPDF->Error()\n#1 /var/www/html/StatArbitrage/fpdf/fpdf.php(885): FPDF->_parsepng()\n#2 /var/www/html/StatArbitrage/rapport_generateur/generateur.inc.php(102): FPDF->Image()\n#3 {main}\n thrown in /var/www/html/StatArbitrage/fpdf/fpdf.php on line 271, referer: http://localhost/StatArbitrage/rapport_generateur.html
    Merci d'avance.

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 401
    Points : 15 766
    Points
    15 766
    Par défaut
    l'erreur "Can't open image file" est normale puisque le fichier s'appelle "image.pngtxvkeq" et au final vous indiquez à fpdf d'utiliser le fichier "image.png".

    ces caractères "vke...q" sont ajoutés par php pour stocker le fichier de manière temporaire et ne pas avoir de souci si 2 fichiers uploadés ont le même nom.
    puisque fpdf regarde l'extension du fichier, il n'arrive pas à détecter le type d'image d'où l'erreur que vous avez.
    pour cela, vous pouvez par exemple indiquer le type d'image comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pdf->Image($image, 10, 10, -300, 0, "png");
    regardez la documentation là :
    http://fpdf.org/fr/doc/image.htm
    http://fpdf.org/

  3. #3
    Membre à l'essai
    Homme Profil pro
    Obervateur de nuage 2.3
    Inscrit en
    Mars 2020
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : Bahamas

    Informations professionnelles :
    Activité : Obervateur de nuage 2.3

    Informations forums :
    Inscription : Mars 2020
    Messages : 46
    Points : 23
    Points
    23
    Par défaut
    Bonjour

    Merci pour votre réponse

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pdf->Image($image,5,145,"png");
    me retourne la même punition
    PHP Fatal error: Uncaught Exception: FPDF error: Unsupported image type: pngderugc in /var/www/html/StatArbitrage/fpdf/fpdf.php:271\nStack trace:\n#0 /var/www/html/StatArbitrage/fpdf/fpdf.php(884): FPDF->Error()\n#1 /var/www/html/StatArbitrage/rapport_generateur/generateur.inc.php(99): FPDF->Image()\n#2 {main}\n thrown in /var/www/html/StatArbitrage/fpdf/fpdf.php on line 271, referer: http://localhost/StatArbitrage/rapport_generateur.html
    J'ai vu ceci aussi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     $image_format = strtolower(pathinfo($_FILES["fichier"]["name"], PATHINFO_EXTENSION));
     var_dump( $image_format); //me retourne string(3) "png"
     die();
    Ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     $image_format = strtolower(pathinfo($_FILES["fichier"]["name"], PATHINFO_EXTENSION));
    $pdf->Image($image,5,145,$image_format);
    me retourne la même punition
    PHP Fatal error: Uncaught Exception: FPDF error: Unsupported image type: pngderugc in /var/www/html/StatArbitrage/fpdf/fpdf.php:271\nStack trace:\n#0 /var/www/html/StatArbitrage/fpdf/fpdf.php(884): FPDF->Error()\n#1 /var/www/html/StatArbitrage/rapport_generateur/generateur.inc.php(99): FPDF->Image()\n#2 {main}\n thrown in /var/www/html/StatArbitrage/fpdf/fpdf.php on line 271, referer: http://localhost/StatArbitrage/rapport_generateur.html

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 401
    Points : 15 766
    Points
    15 766
    Par défaut
    Citation Envoyé par tGQ7zxFY Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pdf->Image($image,5,145,"png");
    me retourne la même punition
    ce n'est pas le code que je vous ai proposé. regardez la documentation de la méthode "image".

  5. #5
    Membre à l'essai
    Homme Profil pro
    Obervateur de nuage 2.3
    Inscrit en
    Mars 2020
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : Bahamas

    Informations professionnelles :
    Activité : Obervateur de nuage 2.3

    Informations forums :
    Inscription : Mars 2020
    Messages : 46
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par mathieu
    $pdf->Image($image, 10, 10, -300, 0, "png");
    me donne :
    PHP Fatal error: Uncaught Exception: FPDF error: Unexpected end of stream in /var/www/html/StatArbitrage/fpdf/fpdf.php:271\nStack trace:\n#0 /var/www/html/StatArbitrage/fpdf/fpdf.php(1406): FPDF->Error()\n#1 /var/www/html/StatArbitrage/fpdf/fpdf.php(1270): FPDF->_readstream()\n#2 /var/www/html/StatArbitrage/fpdf/fpdf.php(1262): FPDF->_parsepngstream()\n#3 /var/www/html/StatArbitrage/fpdf/fpdf.php(885): FPDF->_parsepng()\n#4 /var/www/html/StatArbitrage/rapport_generateur/generateur.inc.php(108): FPDF->Image()\n#5 {main}\n thrown in /var/www/html/StatArbitrage/fpdf/fpdf.php on line 271, referer: http://localhost/StatArbitrage/rapport_generateur.html

  6. #6
    Membre à l'essai
    Homme Profil pro
    Obervateur de nuage 2.3
    Inscrit en
    Mars 2020
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : Bahamas

    Informations professionnelles :
    Activité : Obervateur de nuage 2.3

    Informations forums :
    Inscription : Mars 2020
    Messages : 46
    Points : 23
    Points
    23
    Par défaut
    J'ai trouvé ;

    Quoiqu'il arrive, il faut enregistrer le fichier sur le serveur

    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
     
    		//Fichier
    			//nom aléatoire
    			$bytes = random_bytes(10);
    			$rep=bin2hex($bytes);
     
     
    			//on enregistre le fichier
    			$name_file = $rep.".png";
    			$content_dir= "../documents/";
    			$bouge =move_uploaded_file($_FILES['fichier']['tmp_name'], $content_dir."".$name_file);
    			if( !$bouge ) {
    			  echo "Not uploaded because of error #".$_FILES["file"]["error"];     
    			} 
     
    /// initiate FPDI
    $pdf = new Fpdi();
    // add a page
    $pdf->AddPage();
    // set the source file
    $pdf->setSourceFile('vienne2.pdf');
    // import page 1
    $tplIdx = $pdf->importPage(1);
    // use the imported page
    $pdf->useTemplate($tplIdx);
     
    $pdf->Image($image,5,145);
    unlink($image);

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Envoyer une image via un $_FILES
    Par Monsieur Griboux dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/04/2013, 01h51
  2. [MySQL] Traitement sur une image $_FILES
    Par Pauloscorps dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 08/05/2011, 06h49
  3. [FPDI] fpdf_tpl, image derrière un template
    Par annemekni dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 14/02/2008, 10h47
  4. lire une image au format RAW
    Par Anonymous dans le forum OpenGL
    Réponses: 5
    Dernier message: 20/05/2002, 00h11

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