Upload HTML et PHP

Fermé
sunkie59 Messages postés 55 Date d'inscription vendredi 6 décembre 2013 Statut Membre Dernière intervention 1 juin 2014 - 6 déc. 2013 à 14:44
sunkie59 Messages postés 55 Date d'inscription vendredi 6 décembre 2013 Statut Membre Dernière intervention 1 juin 2014 - 2 janv. 2014 à 15:42
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 :)
A voir également:

8 réponses

MisterPoZZi Messages postés 26 Date d'inscription vendredi 6 décembre 2013 Statut Membre Dernière intervention 25 janvier 2015 3
Modifié par MisterPoZZi le 6/12/2013 à 16:12
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
sunkie59 Messages postés 55 Date d'inscription vendredi 6 décembre 2013 Statut Membre Dernière intervention 1 juin 2014
6 déc. 2013 à 16:25
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
MisterPoZZi Messages postés 26 Date d'inscription vendredi 6 décembre 2013 Statut Membre Dernière intervention 25 janvier 2015 3
6 déc. 2013 à 19:22
Absolument. Je te fais le code en fin de soirée ou demain matin.
0
MisterPoZZi Messages postés 26 Date d'inscription vendredi 6 décembre 2013 Statut Membre Dernière intervention 25 janvier 2015 3
6 déc. 2013 à 15:13
Sois plus clair, j'ai pas compris -_-
0
sunkie59 Messages postés 55 Date d'inscription vendredi 6 décembre 2013 Statut Membre Dernière intervention 1 juin 2014
6 déc. 2013 à 15:17
Ce que je souhaite faire, c'est de renommer un image avant l'upload.
0
MisterPoZZi Messages postés 26 Date d'inscription vendredi 6 décembre 2013 Statut Membre Dernière intervention 25 janvier 2015 3
6 déc. 2013 à 15:18
Le nom du fichier ? Tu veux que ton toto.jpg devienne bob.jpg ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sunkie59 Messages postés 55 Date d'inscription vendredi 6 décembre 2013 Statut Membre Dernière intervention 1 juin 2014
6 déc. 2013 à 15:23
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
MisterPoZZi Messages postés 26 Date d'inscription vendredi 6 décembre 2013 Statut Membre Dernière intervention 25 janvier 2015 3
6 déc. 2013 à 15:26
Ok, donne-moi ton bout de code actuel et je le modifie
0
sunkie59 Messages postés 55 Date d'inscription vendredi 6 décembre 2013 Statut Membre Dernière intervention 1 juin 2014
6 déc. 2013 à 15:29
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
MisterPoZZi Messages postés 26 Date d'inscription vendredi 6 décembre 2013 Statut Membre Dernière intervention 25 janvier 2015 3
Modifié par MisterPoZZi le 7/12/2013 à 14:30
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
sunkie59 Messages postés 55 Date d'inscription vendredi 6 décembre 2013 Statut Membre Dernière intervention 1 juin 2014
7 déc. 2013 à 16:41
J'essaye sa ce soir, et je te dit quoi, merci
0
MisterPoZZi Messages postés 26 Date d'inscription vendredi 6 décembre 2013 Statut Membre Dernière intervention 25 janvier 2015 3
10 déc. 2013 à 13:20
So ?
0
sunkie59 Messages postés 55 Date d'inscription vendredi 6 décembre 2013 Statut Membre Dernière intervention 1 juin 2014
2 janv. 2014 à 15:42
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