Page 1 sur 1

upload de fichiers

Posté : 30 août 2005, 17:40
par Aléna
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

Posté : 30 août 2005, 17:47
par chrileb
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>

Posté : 30 août 2005, 18:04
par Aléna
Merci chrileb !! :)

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

merci. :pouce:

Posté : 31 août 2005, 13:42
par ALéna
s'il vous plaît...
:)

Posté : 31 août 2005, 14:26
par pjl
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

Posté : 01 sept. 2005, 06:35
par R@ph
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.

Posté : 01 sept. 2005, 08:47
par iclo
Il faur renomer les fichiers lors de leur upload, par un nom unique.

Posté : 01 sept. 2005, 14:53
par chrileb
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