Upload HTML et PHP

sunkie59 Messages postés 62 Statut Membre -  
sunkie59 Messages postés 62 Statut Membre -
Bonjour,

Voila, j'ai comme un petit problème, j'essaye de faire un formulaire d'upload avec HTML et PHP, mais le souci, enfin ce que je voudrais, c'est que dans mon formulaire HTML, on puisse choisir le nom de la photo qui va être uploader (je sais pas si cela s'écris comme ceci), exemple :

Nom : [toto] Sur mon site : toto.jpg

Par : [bob] Info fichier toto.jpg : bob // sur mon site :
../actus/bob/toto.jpg

Catégorie : [actu's] Sur mon site : ../actus/

Date : [06/12/2013] Info fichier toto.jpg : 06/12/2013

J'accepte toute réponse, merci de m'aider, c'est assez urgent :)

8 réponses

  1. MisterPoZZi Messages postés 26 Statut Membre 3
     
    Dans le formulaire tu rajoutes un champ texte pour le nom du fichier :

    <input type="text" name="nomfichier" value="" />


    Et dans le PHP tu modifies la ligne 54 :

     // On renomme le fichier
                $nomImage =  md5(uniqid()) .'.'. $extension;


    Par :
    // On renomme le fichier par le nom voulu par l'utilisateur (si renseigné)
    if(!empty($_POST['nomfichier'])) $nomImage = $_POST['nomfichier'] .'.'. $extension;
    else $nomImage = md5(uniqid()) .'.'. $extension;
    


    Mais attention, ce code récupère le nom choisi sans effectuer aucune opération dessus (suppression des accents, espaces, caractères spéciaux..). Je te laisse le faire.
    Et il n'oblige pas l'utilisateur à saisir un nom.

    Voilà !
    1
    1. sunkie59 Messages postés 62 Statut Membre
       
      Super merci, et dernière question, peut on choisir l'emplacement de l'upload entre plusieurs catégories avec ce type de code ?

      <select name="select">
        <option>Commune</option>
        <option>Région</option>
        <option>Pays</option>
      </select>
      0
    2. MisterPoZZi Messages postés 26 Statut Membre 3
       
      Absolument. Je te fais le code en fin de soirée ou demain matin.
      0
  2. MisterPoZZi Messages postés 26 Statut Membre 3
     
    Sois plus clair, j'ai pas compris -_-
    0
  3. sunkie59 Messages postés 62 Statut Membre
     
    Ce que je souhaite faire, c'est de renommer un image avant l'upload.
    0
  4. MisterPoZZi Messages postés 26 Statut Membre 3
     
    Le nom du fichier ? Tu veux que ton toto.jpg devienne bob.jpg ?
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. sunkie59 Messages postés 62 Statut Membre
     
    Non, je m'explique :

    Fichier origine de l'utilisateur : 0212145513.jpg
    Nom que l'utilisateur souhaite le remplacer : toto (ce qui donne toto.jpg)

    Puis upload
    0
  7. MisterPoZZi Messages postés 26 Statut Membre 3
     
    Ok, donne-moi ton bout de code actuel et je le modifie
    0
  8. sunkie59 Messages postés 62 Statut Membre
     
    Formulaire :

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
      <head>
        <title>Upload d'une image sur le serveur !</title>
      </head>
      <body>
     <?php
          if( !empty($message) ) 
          {
            echo '<p>',"\n";
            echo "\t\t<strong>", htmlspecialchars($message) ,"</strong>\n";
            echo "\t</p>\n\n";
          }
        ?>
        <!-- Debut du formulaire -->
       <form enctype="multipart/form-data" action="upload_1.php" method="post">
        <fieldset>
            <legend>Formulaire</legend>
              <p>
                <label for="fichier_a_uploader" title="Recherchez le fichier à uploader !">Envoyer le fichier :</label>
                <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo MAX_SIZE; ?>" />
                <input name="fichier" type="file" id="fichier_a_uploader" />
                <input type="submit" name="submit" value="Uploader" />
              </p>
          </fieldset>
        </form>
        <!-- Fin du formulaire -->
      </body>
    </html>


    Code PHP

    <?php
     
    // Constantes
    define('TARGET', '../upload/');    // Repertoire cible
    define('MAX_SIZE', 100000);    // Taille max en octets du fichier
    define('WIDTH_MAX', 800);    // Largeur max de l'image en pixels
    define('HEIGHT_MAX', 800);    // Hauteur max de l'image en pixels
     
    // Tableaux de donnees
    $tabExt = array('jpg','gif','png','jpeg');    // Extensions autorisees
    $infosImg = array();
     
    // Variables
    $extension = '';
    $message = '';
    $nomImage = '';
     
    /************************************************************
     * Creation du repertoire cible si inexistant
     *************************************************************/
    if( !is_dir(TARGET) ) {
      if( !mkdir(TARGET, 0755) ) {
        exit('Erreur : le répertoire cible ne peut-être créé ! Vérifiez que vous diposiez des droits suffisants pour le faire ou créez le manuellement !');
      }
    }
     
    /************************************************************
     * Script d'upload
     *************************************************************/
    if(!empty($_POST))
    {
      // On verifie si le champ est rempli
      if( !empty($_FILES['fichier']['name']) )
      {
        // Recuperation de l'extension du fichier
        $extension  = pathinfo($_FILES['fichier']['name'], PATHINFO_EXTENSION);
     
        // On verifie l'extension du fichier
        if(in_array(strtolower($extension),$tabExt))
        {
          // On recupere les dimensions du fichier
          $infosImg = getimagesize($_FILES['fichier']['tmp_name']);
     
          // On verifie le type de l'image
          if($infosImg[2] >= 1 && $infosImg[2] <= 14)
          {
            // On verifie les dimensions et taille de l'image
            if(($infosImg[0] <= WIDTH_MAX) && ($infosImg[1] <= HEIGHT_MAX) && (filesize($_FILES['fichier']['tmp_name']) <= MAX_SIZE))
            {
              // Parcours du tableau d'erreurs
              if(isset($_FILES['fichier']['error']) 
                && UPLOAD_ERR_OK === $_FILES['fichier']['error'])
              {
                // On renomme le fichier
                $nomImage = md5(uniqid()) .'.'. $extension;
     
                // Si c'est OK, on teste l'upload
                if(move_uploaded_file($_FILES['fichier']['tmp_name'], TARGET.$nomImage))
                {
                  $message = 'Upload réussi !';
                }
                else
                {
                  // Sinon on affiche une erreur systeme
                  $message = 'Problème lors de l\'upload !';
                }
              }
              else
              {
                $message = 'Une erreur interne a empêché l\'uplaod de l\'image';
              }
            }
            else
            {
              // Sinon erreur sur les dimensions et taille de l'image
              $message = 'Erreur dans les dimensions de l\'image !';
            }
          }
          else
          {
            // Sinon erreur sur le type de l'image
            $message = 'Le fichier à uploader n\'est pas une image !';
          }
        }
        else
        {
          // Sinon on affiche une erreur pour l'extension
          $message = 'L\'extension du fichier est incorrecte !';
        }
      }
      else
      {
        // Sinon on affiche une erreur pour le champ vide
        $message = 'Veuillez remplir le formulaire svp !';
      }
    }
    ?>
    0
  9. MisterPoZZi Messages postés 26 Statut Membre 3
     
    Salut,

    Voici les petits bouts de code te permettant de choisir l'emplacement où sera uploadé le fichier..

    Tu ajoutes ton select dans le formulaire :
    <select name="categorie">
      <option value="dossier1">Valeur 1</option> 
      <option value="dossier2">Valeur 2</option>
      <option value="dossier3">Valeur 3</option>
    </select>


    Tu supprimes le code présent de la ligne 18 à 25 et tu mets celui-ci après la ligne 31 (dans le if empty post) :
    $chemin_final = TARGET.$_POST['categorie'].'/';
    // Création du répertoire cible si inexistant
    if( !is_dir($chemin_final) ) {
      if( !mkdir($chemin_final, 0755) ) {
        exit('Erreur : le répertoire cible ne peut être créé ! Vérifiez que vous disposez des droits suffisants pour le faire ou créez-le manuellement.');
      }
    }


    Et enfin, tu remplaces la ligne 58 par celle-ci :
    // Si c'est OK, on teste l'upload
    if(move_uploaded_file($_FILES['fichier']['tmp_name'], $chemin_final.$nomImage))
    0
    1. sunkie59 Messages postés 62 Statut Membre
       
      J'essaye sa ce soir, et je te dit quoi, merci
      0
    2. MisterPoZZi Messages postés 26 Statut Membre 3
       
      So ?
      0
    3. sunkie59 Messages postés 62 Statut Membre
       
      Désoler de ne pas avoir répondu avant, mais ton code ne fonctionne pas, peut tu me le faire près a copier coller stp ?
      0