upload d image

jeff83fr
Invité n'ayant pas de compte PHPfrance

19 mai 2009, 09:27

Bonjour, je charge une image via le script ci dessous, mais lorsque je veut l afficher, il m affiche le nom du fichier uploder et pas l image.

------------------zone de saisie :---------------------------
<form enctype="multipart/form-data" 
action="fileupload.php" 
method="post">
      <input type="hidden" name="MAX_FILE_SIZE" value="500000" />
      Transfère le fichier <input type="file" name="monfichier" />
      <input type="submit" />

----------------fileupload.php---------------------
<?php
$nomOrigine = $_FILES['monfichier']['name'];
$elementsChemin = pathinfo($nomOrigine);
$extensionFichier = $elementsChemin['extension'];
$extensionsAutorisees = array("jpeg", "jpg", "gif","png");
if (!(in_array($extensionFichier, $extensionsAutorisees))) {
    echo "Le fichier n'a pas l'extension attendue";
} else {    
    // Copie dans le repertoire du script avec un nom
    // incluant l'heure a la seconde pres 
    $repertoireDestination = dirname(uppic)."/";
    $nomDestination = "fichier_du_".date("YmdHis").".".$extensionFichier;

    if (move_uploaded_file($_FILES["monfichier"]["tmp_name"], 
                                    $repertoireDestination.$nomDestination)) {
        echo "Le fichier temporaire ".$_FILES["monfichier"]["tmp_name"].
                " a été déplacé vers ".$repertoireDestination.$nomDestination;
    } else {
        echo "Le fichier n'a pas été uploadé (trop gros ?) ou ".
                "Le déplacement du fichier temporaire a échoué".
                " vérifiez l'existence du répertoire ".$repertoireDestination;
    }
}
?>



Zone d'affichage :

<?php echo $_post["monfichier" ] ?>

Donc AU SECOURS......

Eléphanteau du PHP | 12 Messages

19 mai 2009, 14:07

Hello,

Tout d'abord, il vaut mieux éviter de mettre la limite d'upload dans un champ de formulaire, il vaut mieux modifier la directive post_max_size du php.ini


Ensuite, je ne suis pas sûr d'avoir compris ce que tu veux afficher, mais pour avoir le nom du fichier uploadé, c'est :

Code : Tout sélectionner

echo $_FILES['monfichier']['tmp_name']

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

19 mai 2009, 15:11

Euh... il ne faut pas confondre la limite d'upload permise par le serveur et la limite d'upload permise par le site... c'est pas parce que mon serveur autorise des upload de 2Mo que j'ai envie de retrouver des avatars de 2Mo dans les pages de mon forum... Tu peux donc conserver ton MAX_FILE_SIZE :)

Quant au problème d'affichage, c'est toi qui lui demande d'afficher le nom du fichier uploadé :
<?php echo $_post["monfichier" ] ?> 
Quand on veut afficher une image dans une page html, habituellement on utilise la balise <img src="..." alt="..." /> ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

jeff83fr
Invité n'ayant pas de compte PHPfrance

20 mai 2009, 17:38

Bonjour, merci de m avoir repondu, mais ca marche pas encore tout a fais je m explique, quis une premiere page, l'internaute saisie un formulaire et upload la photo :
   
   <form action="" method="post" enctype="multipart/form-data">

        <p>
                Formulaire d'envoi de fichier :<br />
                <input type="file" name="monfichier" /><br />
                <input type="submit" value="Envoyer le fichier" />
        </p>
</form>
<?php


  if (isset($_FILES['monfichier']) AND $_FILES['monfichier']['error'] == 0)
  {
         // Testons si le fichier n'est pas trop gros
        if ($_FILES['monfichier']['size'] <= 6500000)
        {
                $infosfichier = pathinfo($_FILES['monfichier']['name']);
                $extension_upload = $infosfichier['extension'];
                $extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png');
                if (in_array($extension_upload, $extensions_autorisees))
                {
                $id_membre= date('mYHis');
			
                         $nom = "uppic/{$id_membre}.{$extension_upload}";
			
                        $resultat = move_uploaded_file($_FILES['monfichier']['tmp_name'],$nom);
                        if ($resultat) echo "Transfert réussi";
                     
                }
                   else { echo" mauvaise extension " ;}
        }
          else { echo" fichier trop gros " ;}
   }
    else { echo" pb d'upload " ;}

   
?>
      <img src="<?php echo "$nom" ?>"width="500" height="375">
	  <form action="fichefinal.php" method="post">
	  <p align="right" class="Style18"<u> Titre</u> <input type="text" name="titre" /> 
<p align="right" class="Style18"<u> Date de sortie</u> <input type="text" name="date" /> <br>
<p align="right" class="Style18"<u> Réalisateur</u> <input type="text" name="realisateur" /> <br>
<p align="right" class="Style18"<u> Durée</u> <input type="text" name="duree" /> 
<p align="right" class="Style18"<u> Acteur</u> <input type="text" name="acteur" /> <br>
<p> <p class="Style18"> <U> Synopsis </p><textarea name="synopsis" rows="8" cols="45">
Synopsis.
</textarea><br>

</p>
<p class="Style18"> <U> Critique </p><textarea name="critique" rows="8" cols="45">
Critique...
</textarea>
<p align="center" class="Style18"<u> Note :</u>
<select name="choix">
    <option value="1">0</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
	<option value="5">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
    <option value="8">8</option>
	<option value="9">9</option>
    <option value="10">10</option>
   </select>
 <p>   
 
<form <action="" method="post"form <input type="submit" value="Valider"  /> </form>

</form>
jusque la pas de probleme, la photo saffiche, et les champs sont bien prest a etre rempli, ensuite je renvoie toute mes info sur une page fichefinal.php

qui contient le script suivant :
<img src="<?php echo "$nom" ?>"width="500" height="375">
		
<p align="Left"    class="Style20" <u> Date de sortie :        </u> <p> <p  class="Style11">  <?php   echo $_POST['date']; ?> 
<p align="Left"    class="Style20" <u> Réalisateur :           </u> <p> <p  class="Style11">  <?php   echo $_POST['realisateur']; ?>
<p align="Left"    class="Style20" <u> Durée :                 </u> <p> <p  class="Style11">  <?php   echo $_POST['duree']; ?>
<p align="Left"    class="Style20" <u> Acteur :                </u> <p> <p  class="Style11">  <?php   echo $_POST['acteur']; ?>
<p align="center"  class="Style20" <u> Resume de l histoire:   </u> <p> <p  class="Style11">  <?php   echo $_POST['synopsis']; ?>
<p align="center"  class="Style20" <u> Critique                </u> <p> <p class="Style11">   <?php   echo $_POST['critique']; ?>
<p align="center"  class="Style20" >  <?php echo "Note :"  ;  echo $_POST['choix']; echo "/10"?>
et la mes champs remplies par l utilisateur saffiche bien, mais l'image qui s'afficher la page davant ne saffiche plus(et pourtant lorque je regarde dans le dossier uppic la photo uplode y est bien...

jeff83
Invité n'ayant pas de compte PHPfrance

20 mai 2009, 19:02

Derniere modif, si j ai tout compris il faut que je transmette ma photo d'une page a l'autre donc sur ma page"source" j ai inscrit :
<a href="fichefinal.php?nom=$nom"> 
en fin de page (si je le met avant je passe directement a l autre page sans avoir le temps de saisir quoi que ce soit).pour transmettre ma variable.

Et sur la page cible alias fiche final.php ,j ai inscrit
<img src="<?php echo $_GET['nom'] ?>"width="500" height="375">
Le get pour recuperer ma variable, mais la rien ne saffiche je ne comprend pas.

Help MEEEEEEEEEEEEEEEEEEE

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

21 mai 2009, 12:08

Ton premier script permet à l'utilisateur de remplir son formulaire et d'uploader son image. L'image est enregistré sur le serveur et son emplacement stocké dans ta variable $nom (que tu peux utiliser pour afficher l'image la première fois)

Maitnenant, lorsque complète le formulaire et soumet les données au script suivant, il ne lui envoi pas ta variable $nom. Le script ne peut donc pas trouver tout seul l'emplacement de l'image à afficher. Il te suffit donc dans les paramètres que tu envois à ce script d'ajouter simplement le chemin de l'image dans un champ hidden qui sera transmit avec les autres données du formulaire :
<img src="<?php echo "$nom" ?>" width="500" height="375"> 
<form action="fichefinal.php" method="post"> 

  <input type="hidden" name="nom" value="<?php echo $nom ?>" />

  <p align="right" class="Style18"<u> Titre</u> <input type="text" name="titre" />  
  <p align="right" class="Style18"<u> Date de sortie</u> <input type="text" name="date" /> 
....
Tu pourras ainsi dans ton script fichefinal.php récupérer la variable $_POST['nom'] qui contiendra le chemin de l'image, que tu pourras utiliser pour l'afficher :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

jeff83fr
Invité n'ayant pas de compte PHPfrance

21 mai 2009, 18:35

Je doit decidement pas etre doué parce que la soluce que tu ma donné ne fonctionne pas : si je t ai bien compris Ryle mon code devrait resembler a ca :

1 mon formulaire de saisie :

   
   <form action="" method="post" enctype="multipart/form-data">

        <p>
                Formulaire d'envoi de fichier :<br />
                <input type="file" name="monfichier" /><br />
                <input type="submit" value="Envoyer le fichier" />
        </p>
</form>
<?php


  if (isset($_FILES['monfichier']) AND $_FILES['monfichier']['error'] == 0)
  {
         // Testons si le fichier n'est pas trop gros
        if ($_FILES['monfichier']['size'] <= 6500000)
        {
                $infosfichier = pathinfo($_FILES['monfichier']['name']);
                $extension_upload = $infosfichier['extension'];
                $extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png');
                if (in_array($extension_upload, $extensions_autorisees))
                {
                $id_membre= date('mYHis');
			
                         $nom = "uppic/{$id_membre}.{$extension_upload}";
			
                        $resultat = move_uploaded_file($_FILES['monfichier']['tmp_name'],$nom);
                        if ($resultat) echo "Transfert réussi";
                     
                }
                   else { echo" mauvaise extension " ;}
        }
          else { echo" fichier trop gros " ;}
   }
    else { echo" pb d'upload " ;}

   
?>
    <img src="<?php echo "$nom" ?>" width="500" height="375"> 
 
  <form action="fichefinal.php" method="post">  
  <input type="hidden" name="nom" value="<?php echo $nom ?>" />
:twisted: je recupere ma photo pour la transmettre a l autre page c'est ca?
  <p align="right" class="Style18"<u> Titre</u> <input type="text" name="titre" />   
  <p align="right" class="Style18"<u> Date de sortie</u> <input type="text" name="date" />  <br>

<p align="right" class="Style18"<u> Réalisateur</u> <input type="text" name="realisateur" /> <br>
<p align="right" class="Style18"<u> Durée</u> <input type="text" name="duree" /> 
<p align="right" class="Style18"<u> Acteur</u> <input type="text" name="acteur" /> <br>
<p> <p class="Style18"> <U> Synopsis </p><textarea name="synopsis" rows="8" cols="45">
Synopsis.
</textarea><br>

</p>
<p class="Style18"> <U> Critique </p><textarea name="critique" rows="8" cols="45">
Critique...
</textarea>
<p align="center" class="Style18"<u> Note :</u>
<select name="choix">
    <option value="1">0</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
	<option value="5">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
    <option value="8">8</option>
	<option value="9">9</option>
    <option value="10">10</option>
   </select>
 <p>   
 
<form <action="" method="post"form <input type="submit" value="Valider"  /> </form>

</form>

et pour la page d'affichage(fichefinal.php)
<img src="<?php echo "$nom" ?>"width="500" height="375">.
et la je l'affiche?
	
<p align="Left"     <u> Date de sortie :        </u> <p> <p  class="Style11">  <?php   echo $_POST['date']; ?> 
<p align="Left"     <u> Réalisateur :           </u> <p> <p  class="Style11">  <?php   echo $_POST['realisateur']; ?>
<p align="Left"     <u> Durée :                 </u> <p> <p  class="Style11">  <?php   echo $_POST['duree']; ?>
<p align="Left"     <u> Acteur :                </u> <p> <p  class="Style11">  <?php   echo $_POST['acteur']; ?>
<p align="center"   <u> Resume de l histoire:   </u> <p> <p  class="Style11">  <?php   echo $_POST['synopsis']; ?>
<p align="center"  <u> Critique                </u> <p> <p class="Style11">   <?php   echo $_POST['critique']; ?>
<p align="center"    <?php echo "Note :"  ;  echo $_POST['choix']; echo "/10"?>

ET la ben y a toujour rien, qui saffiche... grrr ce script va me rendre fou alors que c'est cense etre super basique ca fait 15 jours que j y suis je craqueeeeeeeee

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

21 mai 2009, 20:04

Presque... c'est ton affichage dans fichefinal.php qui n'est pas bon :)

Oublie la première partie... l'utilisateur a envoyé un fichier sur le site, tu l'as enregistré sur ton serveur et tu as son nom dans ta variable $nom. Voilà où tu en es quand tu affiches l'image la première fois.

On part donc d'un nouveau formulaire, dans lequel tu demandes à l'utilisateur de te spécifier le titre, la date de sortie, le réalisateur etc. Ce que je t'ai préconisé de faire, c'est d'ajouter un champ caché à ce formulaire, dans lequel tu vas stocker le nom du fichier. Jusque là, pas de problème. L'utilisateur rempli et envoi ce formulaire.

A partir de là, tu récupères dans ton script fichefinal.php, le nom du fichier comme tu récupères la date, le réalisateur etc. toutes ces informations ayant été envoyées via ton formulaire et donc la méthode post :
<img src="<?php echo $_POST['nom'] ?>" width="500" height="375" />
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

jeff83fr
Invité n'ayant pas de compte PHPfrance

22 mai 2009, 07:44

Ca Marche Merci beaucoup, mon heros....MERCI

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

22 mai 2009, 11:34

Imagelol :)

Modération :
Puisque ta question est résolue, j'ajoute le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.

Tu peux réaliser cette opération toi-même
en cliquant sur le bouton Image qui s'affiche en haut à gauche de ce sujet
si tu as posté le 1er message en tant que membre (inscrit et identifié).

Alors... inscris-toi !!! ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...