Auteur Sujet: Upload D'images Jpg  (Lu 5977 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Corby

  • Débutant
  • *
  • Messages: 93
    • http://
Upload D'images Jpg
« Réponse #15 le: 01 juillet 2003 à 16:51:00 »
dans ton formulaire d'envoi ou tu as ton <input type=file tu doit mettre <form name="nomform" method="post" ENCTYPE="multipart/form-data> c'est le enctype qui determenie tout

Hors ligne spontex

  • Connaisseur
  • ***
  • Messages: 262
    • http://dvdtoile.com
Upload D'images Jpg
« Réponse #16 le: 02 juillet 2003 à 11:26:19 »
Citer
En suivant scrupuleusement tes consignes voici ce que j'obtiens :

ÿØÿàJFIFÿþ>CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), default quality ÿÛC    $.' ",#(7),01444'9=82<.342ÿÛC  2!!22222222222222222222222222222222222222222222222222ÿÀd\"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?î7€.Òr ;ŒŽŸôÐýޔ¤1™N läðGñŸÝïÏñÐĀU˜±Ž[$íW¦î§Ë´ÜÆÓÞ9`“ÿÇþC®ãÂÇ̪Œg0í]˜#‘ÿ<óüAëÅH%3nvq‘&ÝÛ¾] ã‚ÿÝÇëMHG!ÉÈ ¢.................

What is this?
C'est une image JPEG !!

Ajoute cette commande :
Header("Content-type: image/jpeg");
Avant la commande imagejpeg(...)

Pour bien indiquer que c'est une image.
Et ajoute un :
imagedestroy($im);

A la fin, pour libérer la mémoire.
spontex@dvdtoile.com
dvdtoile.com : Toutes les sorties au cinema et en DVD.

Hors ligne Mikado

  • Connaisseur
  • ***
  • Messages: 252
    • Chez-Godzi
Upload D'images Jpg
« Réponse #17 le: 02 juillet 2003 à 13:00:29 »
Le calvaire continue :(

Voici une nouvelle vague d'erreurs :

Citer
Warning: imagecreatefromjpeg: Unable to open '' for reading in c:\program files\easyphp\www\bdd\affiche_image.php on line 4

Warning: fopen("", "rb") - No error in c:\program files\easyphp\www\bdd\affiche_image.php on line 5

Warning: getimagesize: Unable to open '' for reading. in c:\program files\easyphp\www\bdd\affiche_image.php on line 6

Warning: imagecolorallocate(): supplied argument is not a valid Image resource in c:\program files\easyphp\www\bdd\affiche_image.php on line 9

Warning: imagefilledrectangle(): supplied argument is not a valid Image resource in c:\program files\easyphp\www\bdd\affiche_image.php on line 10

Warning: Cannot add header information - headers already sent by (output started at c:\program files\easyphp\www\bdd\inc.php:23) in c:\program files\easyphp\www\bdd\affiche_image.php on line 11

Warning: imagejpeg(): supplied argument is not a valid Image resource in c:\program files\easyphp\www\bdd\affiche_image.php on line 12

Warning: imagedestroy(): supplied argument is not a valid Image resource in c:\program files\easyphp\www\bdd\affiche_image.php on line 13

Mon script principal :

function AppliActionWay()
{
   global $base,$bouton,$id,$fichier;
   $x = "";
   $x .= "<br><table align=left width='100%' border=0 bgcolor=#E4DCD2>";
   $x .= "<tr><td align=center width='100%'> ";
   $x .= "<p1>Fichier à télécharger :</p1><input name=\"fichier\" type=\"file\" value=\"\" size=\"50\">";
   $x .= boutonImage ("./images/telech.jpg","boutonUpload", "23", "20");
   $x .= "</td></tr>";
   include("affiche_image.php");
   if($bouton == "boutonUpload")
   {
   $x .= "<tr><td><img src=\"affiche_image?fichier=".urlencode($fichier)."\" width=$large height=$haut></td></tr></table>";
   }

   return $x;
}

Mon script d'affichage : affiche_image.php

<?php
$fichier = stripslashes($fichier);
$extension = strtolower(substr($fichier, -3));
$im = imagecreatefromjpeg($fichier);
$in = fopen($fichier, "rb");
$size = getimagesize($fichier);
$large = $size[0];
$haut = $size[1];
$red = ImageColorAllocate($im, 255, 0, 0);
imagefilledrectangle ($im, 300, 200, 500, 500, $red);
Header("Content-type: image/jpeg");
imagejpeg($im);
imagedestroy($im);
?>

Pour l'erreur de header, voici mon script inc.php

$utilisateur = "root";
$motdepasse  = "";
$base        = "mabase";
$serveur     = "localhost";

function db_connect()
{
        global $utilisateur, $motdepasse, $serveur;
        $connexion = mysql_connect($serveur, $utilisateur, $motdepasse);
        return $connexion;
}

?>

Je suis vraiment désolé Spontex de t'avoir embarqué dans cette galère :o  
"Il est plus facile de jouer au mikado avec des spaghettis crus qu'avec des cuits" (Philippe GELUCK).
-------------------

Hors ligne spontex

  • Connaisseur
  • ***
  • Messages: 262
    • http://dvdtoile.com
Upload D'images Jpg
« Réponse #18 le: 02 juillet 2003 à 14:14:59 »
Déjà, le script affiche_image marche, le problème se situe au niveau de l'upload :

http://dvdtoile.com/tmp/affiche_image?fich...08.LZZZZZZZ.jpg

Il te manque au moins un <form method='POST' enctype='multipart/form-data'> ... </form > si tu ne l'as pas déjà
« Modifié: 02 juillet 2003 à 14:19:30 par spontex »
spontex@dvdtoile.com
dvdtoile.com : Toutes les sorties au cinema et en DVD.

Hors ligne Mikado

  • Connaisseur
  • ***
  • Messages: 252
    • Chez-Godzi
Upload D'images Jpg
« Réponse #19 le: 02 juillet 2003 à 16:12:11 »
Le script corrigé :

function AppliActionWay()
{
   global $base,$bouton,$id,$fichier;
   $x = "";
   $x .= "<form action=\"\" method=\"post\" enctype=\"multipart/form-data\" name=\"spot\"> \n ";
   $x .= "<br><table align=left width='100%' border=0 bgcolor=#E4DCD2>";
   $x .= "<tr><td align=center width='100%'> ";
   $x .= "<p1>Fichier à télécharger :</p1><input name=\"fichier\" type=\"file\" value=\"\" size=\"50\">";
   $x .= boutonImage ("./images/telech.jpg","boutonUpload", "23", "20");
   $x .= "</td></tr>";
   include("affiche_image.php");
   if($bouton == "boutonUpload")
   {
   $x .= "<tr><td><img src=\"affiche_image?fichier=".urlencode($fichier)."\" width=$large height=$haut>";
   }
   $x .= "</td></tr></table></form>";
   return $x;
}

Mêmes erreurs...
"Il est plus facile de jouer au mikado avec des spaghettis crus qu'avec des cuits" (Philippe GELUCK).
-------------------

Hors ligne spontex

  • Connaisseur
  • ***
  • Messages: 262
    • http://dvdtoile.com
Upload D'images Jpg
« Réponse #20 le: 02 juillet 2003 à 16:32:21 »
Commence par virer cette ligne :

include("affiche_image.php");

Et aussi vire pour l'instant les informations width et height de la balise <img>
« Modifié: 02 juillet 2003 à 16:42:55 par spontex »
spontex@dvdtoile.com
dvdtoile.com : Toutes les sorties au cinema et en DVD.

Hors ligne spontex

  • Connaisseur
  • ***
  • Messages: 262
    • http://dvdtoile.com
Upload D'images Jpg
« Réponse #21 le: 02 juillet 2003 à 16:50:17 »
Pour terminer : affiche_image ne peut pas prendre directement en paramètre le fichier uploadé, car celui-ci a été placé dans un répertoire temporaire, et est effacé dès la fin du script d'interprétation du formulaire.
Il te faut donc utiliser move_uploaded_file.

Par exemple :

$x = "";
$x .= "<form action=\"\" method=\"post\" enctype=\"multipart/form-data\" name=\"spot\"> \n ";
$x .= "<br><table align=left width='100%' border=0 bgcolor=#E4DCD2>";
$x .= "<tr><td align=center width='100%'> ";
$x .= "<p1>Fichier à télécharger :</p1><input name=\"fichier\" type=\"file\" value=\"\" size=\"50\">";
$x .= "<input type='submit'>";
$x .= "</td></tr>";
if ($fichier_name != '')
{
move_uploaded_file($fichier, "./$fichier_name");
$x .= "<tr><td><img src=\"affiche_image?fichier=./$fichier_name\">";
}
$x .= "</td></tr></table></form>";

Le problème est ensuite l'effacement des fichiers .jpg ainsi copiés.

Tu peux par exemple faire ainsi :

$d = dir(".");
while ($entry = $d->read()) {
if (strtolower($entry, -3) == 'jpg' && time() - filemtime($entry) > 100)
  unlink($entry);
}

Ce qui efface les fichiers du répertoire courant vieux de plus de 100 secondes.

A+
« Modifié: 02 juillet 2003 à 18:03:05 par spontex »
spontex@dvdtoile.com
dvdtoile.com : Toutes les sorties au cinema et en DVD.

Hors ligne Mikado

  • Connaisseur
  • ***
  • Messages: 252
    • Chez-Godzi
Upload D'images Jpg
« Réponse #22 le: 02 juillet 2003 à 18:49:06 »
Le script modifié :

$x = "";
$x .= "<form action=\"\" method=\"post\" enctype=\"multipart/form-data\" name=\"spot\"> \n ";
$x .= "<br><table align=left width='100%' border=0 bgcolor=#E4DCD2>";
$x .= "<tr><td align=center width='100%'> ";
$x .= "<p1>Fichier à télécharger :</p1><input name=\"fichier\" type=\"file\" value=\"\" size=\"50\">";
$x .= "<input type='submit'>";
$x .= "</td></tr>";
   if ($fichier_name != '')
   {
   move_uploaded_file($fichier, "./$fichier_name");
   $x .= "<tr><td><img src=\"affiche_image?fichier=./$fichier_name\">";
   }
$x .= "</td></tr></table></form>";

...mêmes erreurs :(  
"Il est plus facile de jouer au mikado avec des spaghettis crus qu'avec des cuits" (Philippe GELUCK).
-------------------

Hors ligne spontex

  • Connaisseur
  • ***
  • Messages: 262
    • http://dvdtoile.com
Upload D'images Jpg
« Réponse #23 le: 02 juillet 2003 à 18:57:47 »
Regarde, ça marche nickel :

http://dvdtoile.com/tmp/test

avec ces fichiers (le $_FILES n'est qu'une façon plus propre de l'écrire, ça marche aussi comme tu l'as écrit)


test.php
<?
$x = "";
$x .= "<form action=\"\" method=\"post\" enctype=\"multipart/form-data\" name=\"spot\"> \n ";
$x .= "<br><table align=left width='100%' border=0 bgcolor=#E4DCD2>";
$x .= "<tr><td align=center width='100%'> ";
$x .= "<p1>Fichier à télécharger :</p1><input name=\"fichier\" type=\"file\" value=\"\" size=\"50\">";
$x .= "<input type='submit'>";
$x .= "</td></tr>";
if (is_uploaded_file($_FILES['fichier']['tmp_name']))
{
move_uploaded_file($_FILES['fichier']['tmp_name'], "./".$_FILES['fichier']['name']);
$x .= "<tr><td><img src=\"affiche_image?fichier=./".urlencode($_FILES['fichier']['name'])."\">";
}
$x .= "</td></tr></table></form>";

echo $x;
?>


affiche_image.php
<?php
$fichier = urldecode($fichier);
$extension = strtolower(substr($fichier, -3));
$im = imagecreatefromjpeg($fichier);
$in = fopen($fichier, "rb");
$size = getimagesize($fichier);
$large = $size[0];
$haut = $size[1];
$red = ImageColorAllocate($im, 255, 0, 0);
imagefilledrectangle ($im, 300, 200, 500, 500, $red);
Header("Content-type: image/jpeg");
imagejpeg($im);
imagedestroy($im);
?>
« Modifié: 02 juillet 2003 à 19:01:34 par spontex »
spontex@dvdtoile.com
dvdtoile.com : Toutes les sorties au cinema et en DVD.

Hors ligne Mikado

  • Connaisseur
  • ***
  • Messages: 252
    • Chez-Godzi
Upload D'images Jpg
« Réponse #24 le: 02 juillet 2003 à 22:48:50 »
Je confirme que ça marche chez toi.

J'ai trouvé la cause des erreurs, j'avais oublié un include("affiche_image.php") dans ma page index...:unsure:  

Voici ici http://www.carnetdepeche.com/bdd/go.php ce que ça donne sur le #2 de Phpnet.
Ton identification : spontex/spontex
Clic sur Mes données puis sur W.

Tu constateras qu'il y a une redirection vers la case départ...et aucune erreur affichée.  
"Il est plus facile de jouer au mikado avec des spaghettis crus qu'avec des cuits" (Philippe GELUCK).
-------------------

Hors ligne spontex

  • Connaisseur
  • ***
  • Messages: 262
    • http://dvdtoile.com
Upload D'images Jpg
« Réponse #25 le: 02 juillet 2003 à 23:12:35 »
Horreur, des frames ! Qu'est-ce que c'est moche, les frames ! C'est à proscrire, aussi.
Le problème est que dans ton form tu as mis action="" ce qui signifie que la page "résultat" est la page courante... donc go.php. Il faut que comme action, tu mettes la page de "résultat".

Mais vire tous ces frames, c'est mauvais ! Impossible de bookmarker les pages, de voir l'adresse de la page où l'on est, etc. etc. On faisait ça il y a 5 ans, maintenant, avec PHP et CSS, c'est un peu moisi !

Idem pour le Javascript... à proscrire, ça complique tout !!
« Modifié: 02 juillet 2003 à 23:20:30 par spontex »
spontex@dvdtoile.com
dvdtoile.com : Toutes les sorties au cinema et en DVD.

Hors ligne Mikado

  • Connaisseur
  • ***
  • Messages: 252
    • Chez-Godzi
Upload D'images Jpg
« Réponse #26 le: 02 juillet 2003 à 23:39:17 »
Ce que tu ne sais pas, c'est que j'utilise un canevas qui me permet de créer mes pages dynamiquement.
Au départ, j'ai une seule page html (go.php) qui contient dans son body un appel à la fonction main() que voici:

function main()
{
  global $pagecourante, $idsession, $bouton, $login, $pwd, $actioncourante ;
  $pagecourante = "go";

  $x = SessionTraiter();
  if ($idsession > 0)
  {
    // le début du seul formulaire qui englobe toutes les pages
    $x .= "<form action=\"$pagecourante.php\" method=post ";
    $x .= "name=form$pagecourante target=\"_self\"> \n ";
    // le champ "bouton" est placé (caché) en premier dans tous les formulaires
    $x .= " <input type=hidden name='bouton' value=\"$bouton\"> \n";

    $x .= AppliActionCalculer();
    $x .= AppliConstruire();
   
    // les champs cachés à placer en dernier dans le formulaire
    $x .= "<input type=hidden name='idsession' value=\"$idsession\"> \n";
    $x .= "<input type=hidden name='actioncourante' value=\"$actioncourante\"> \n";
    $x .= "<input type=hidden name='codeaide' value=\"$codeaide\"> \n";
    $x .= "</form> \n ";
  }
  printf ("%s", $x);
}
?>

Le main est exécuté lors de chaque clic sur un submit. Je crois que le pb vient de là...
Qu'en penses-tu?
"Il est plus facile de jouer au mikado avec des spaghettis crus qu'avec des cuits" (Philippe GELUCK).
-------------------

Hors ligne Corby

  • Débutant
  • *
  • Messages: 93
    • http://
Upload D'images Jpg
« Réponse #27 le: 03 juillet 2003 à 09:09:53 »
ya pas de enctype="multipart/form-data" dans le formulaire de ta fonction main

Hors ligne Mikado

  • Connaisseur
  • ***
  • Messages: 252
    • Chez-Godzi
Upload D'images Jpg
« Réponse #28 le: 03 juillet 2003 à 09:38:38 »
Exact mais dans cette appli je télécharge aussi des fichiers txt.
Si j'ajoute enctype="multipart/form-data" dans main, ça ne va pas mettre le souk?
"Il est plus facile de jouer au mikado avec des spaghettis crus qu'avec des cuits" (Philippe GELUCK).
-------------------

Hors ligne Mikado

  • Connaisseur
  • ***
  • Messages: 252
    • Chez-Godzi
Upload D'images Jpg
« Réponse #29 le: 03 juillet 2003 à 10:37:44 »
Je viens de tester l'upload et la lecture d'un fichier txt...ça ne marche plus avec le multipart :(  et ça remarche si je l'enlève...
"Il est plus facile de jouer au mikado avec des spaghettis crus qu'avec des cuits" (Philippe GELUCK).
-------------------