upload de fichiers

Aléna
Invité n'ayant pas de compte PHPfrance

30 août 2005, 17:40

Bonjour,

J'ai un soucis quant au téléchargement des fichiers (photos par exemple) à partir d'un formulaire. Je ne sais tout simplement pas comment faire pour le fichier soit téléchrgé puis affiché sur ma page.

Si quelqu'un peu m'aider, en m'expliquant la chose très simplement (je ne suis pas une craq en la matière) ça serait vraiment sympa.

Merci d'avance

:P

chrileb
Invité n'ayant pas de compte PHPfrance

30 août 2005, 17:47

voila un script php qui permet d'uploader des images
normalement tu as juste a modifier la valeur de la $dest_dossier et mettre le chemin de ton repertoire image
<?php
//...
if(isset($_FILES['photo'])){
             // params
             unset($erreur);  $extensions_ok = array('png', 'gif', 'jpg', 'jpeg');  $taille_max = 100000;  $dest_dossier = '';
             // utilisez également des slashes sous windows :
             $categ=$_REQUEST['categ'];
             $titre=$_REQUEST['titre'];
             $commentaire=$_REQUEST['commentaire'];
             $nom_rep=  strtr($titre,     'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',     'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
             $nom_rep=  preg_replace('/([^.a-z0-9]+)/i', '_', $nom_rep);
             $dest_dossier  = "../images/$categ/$nom_rep/";
             if (!is_dir($dest_dossier))
             {
             mkdir ($dest_dossier);
             }
             // vérifications
             if( !in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok ) )
             {
                  $erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg !';
             }
             elseif (file_exists($_FILES['photo']['tmp_name'])           and filesize($_FILES['photo']['tmp_name']) > $taille_max)
             {
                 $erreur = 'Votre fichier doit faire moins de 500Ko !';
             }
             // copie du fichier
             if(!isset($erreur))  {
                     $dest_fichier = basename($_FILES['photo']['name']);
                 // formatage nom fichier
                 // enlever les accents
                 $dest_fichier = strtr($dest_fichier,     'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',     'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
                 // remplacer les caracteres autres que lettres, chiffres et point par _
                 $dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);
                 // copie du fichier
                  move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier . $dest_fichier);
                  echo "la photo a bien été envoyée";
             }
et le code html
<form method="POST" action="upload_photo.php" enctype="multipart/form-data">

      <input type="hidden" name="MAX_FILE_SIZE" value="500000" />
      <table>
       <tr><td>Catégorie :</td><td><select id="categ" name="categ">
    <option value="categ1">categ1</option>     
    <option value="categ2">categ2</option>     

       </select></td></tr>
      <tr><td>Titre :</td><td><input type="text" name="titre" value="<?if (isset($titre)){echo $titre;}?>"/></td></tr>
      <tr><td>Photo :</td><td><input type="file" name="photo" /></td></tr>
      <tr><td>Commentaire :</td><td><input type="text" name="commentaire" /></td></tr>
      <tr><td></td><td></td></tr>
      <tr><td colspan="2"><input type="submit" name="envoi" value="Envoyer les fichiers" /></td></tr>
      </table>
      </form>

Aléna
Invité n'ayant pas de compte PHPfrance

30 août 2005, 18:04

Merci chrileb !! :)

juste une question : quelle est la différence entre $dest-dossier et tmp_name ?
les deux sont-ils différents ?

merci. :pouce:

ALéna
Invité n'ayant pas de compte PHPfrance

31 août 2005, 13:42

s'il vous plaît...
:)

ViPHP
pjl
ViPHP | 2119 Messages

31 août 2005, 14:26

Merci chrileb !! :)

juste une question : quelle est la différence entre $dest-dossier et tmp_name ?
les deux sont-ils différents ?

merci. :pouce:
Toi, tu n'as pas lu ce tutau là : http://www.phpfrance.com/tutoriaux/inde ... e-fichiers

R@ph
Invité n'ayant pas de compte PHPfrance

01 sept. 2005, 06:35

Bonjour.

J'utilise ce script, mais je me suis retrouvé face à un probleme.

Si 2 utilisateurs différents envoient un fichier du même nom, le premier fichier sera remplacé par celui du 2nd utilisateur.

Donc ma question est : est-il possible d'eviter ceci en ajoutant quelque chose dans le script?

Merci.

ViPHP
ViPHP | 2144 Messages

01 sept. 2005, 08:47

Il faur renomer les fichiers lors de leur upload, par un nom unique.

chrileb
Invité n'ayant pas de compte PHPfrance

01 sept. 2005, 14:53

oui ou vérifier si le fichier n'existe pas déja avant de le copier sur le serveur pour ca il existe la fonction file_exists

cf http://fr3.php.net/function.file-exists