[RESOLU] Upload file!!!

Eléphanteau du PHP | 16 Messages

30 mai 2013, 22:59

Bonjour à tous!
Comment de changer le nom du fichier quand on le telecharger vers le serveur. Parce que je veux telecharger beaucoup de fichier identiques vers un répertoire du serveur.
Voici c'est mon fichier cible.php
<?php
         // Testons si le fichier a bien été envoyé et s'il n'y a pas d'erreur
         if (isset($_FILES['monfichier']) AND $_FILES['monfichier']['error'] == 0)
         {
            // Testons si le fichier n'est pas trop gros
            if ($_FILES['monfichier']['size'] <= 1000000)
            {
                // Testons si l'extension est autorisée
                $infosfichier = pathinfo($_FILES['monfichier']['name']);
                //foreach($infosfichier as $a) echo $a .'<br/>';
                $extension_upload = $infosfichier['extension'];
                //echo $extension_upload .'<br/>';
                $extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png');
                if (in_array($extension_upload, $extensions_autorisees))
                {
                   // On peut valider le fichier et le stocker définitivement
                   //tmp_name est pour remplacher le fichier est entrain d'attendre sur le repertoire temporaire du serveur a l'autre repertoire.
                   //$fichier = basename($_FILES['monfichier']['name']);
                   $fichier = $infosfichier['filename'] .date(d).date(m).date(Y).date(H).date(i).date(s).'.'.$extension_upload;
                   $fichier = strtr($fichier,'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
                   //echo $fichier .' avec path = ' .$_FILES['monfichier']['tmp_name'] .'<br/>';
                   $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
                   echo $fichier .'<br/>';
                   move_uploaded_file($_FILES['monfichier']['tmp_name'], '../Uploads/' .$fichier);
                   echo "L'envoi a bien été effectué !";
                }
            }
         }
 ?>
Mais le nom du fichier qui est telecharger ne changeait pas! Et l'ancien était écrasé. Merci d'avance!

Mammouth du PHP | 619 Messages

30 mai 2013, 23:15

Bonjour,

sur cette ligne
move_uploaded_file($_FILES['monfichier']['tmp_name'], '../Uploads/' .$fichier);
move_uploaded_file("fichier temporaire","le future nom du fichier");

donc tu dois modifier '../Uploads/'.$fichier par '../Uploads/le nom du fichier que tu veux.'.$extension_upload
Modifié en dernier par ghost5922 le 30 mai 2013, 23:17, modifié 1 fois.

Eléphanteau du PHP | 16 Messages

30 mai 2013, 23:17

tu vois dans mes codes. J'ai changé dèja le variables $fichier comme :
$fichier = $infosfichier['filename'] .date(d).date(m).date(Y).date(H).date(i).date(s).'.'.$extension_upload; 

Mammouth du PHP | 619 Messages

30 mai 2013, 23:20

Ok alors j'ai pas compris ta demande du coup avec cette ligne
$fichier = $infosfichier['filename'] .date(d).date(m).date(Y).date(H).date(i).date(s).'.'.$extension_upload;
tu récupère le nom du fichier + date + extension

tu veux pouvoir les gardes en mémoire ? si oui tu peux les mettre en base de donnée

Eléphanteau du PHP | 16 Messages

30 mai 2013, 23:26

Oui, c'est ca, je veux les mettre dans une base de données. Mais je comprends pas pourquoi l'encien etait écrasé. Et le nom du fichier ne changait pas Malgré que j'ai changé le code comme ca:
move_uploaded_file($_FILES['monfichier']['tmp_name'], $_SERVER['DOCUMENT_ROOT'].'/Uploads/' .'aaaa');
pour tester.

Mammouth du PHP | 619 Messages

30 mai 2013, 23:29

Ok si le nom du fichier d'importe peux utilise directement la fonction time();
<?php
         // Testons si le fichier a bien été envoyé et s'il n'y a pas d'erreur
         if (isset($_FILES['monfichier']) AND $_FILES['monfichier']['error'] == 0)
         {
            // Testons si le fichier n'est pas trop gros
            if ($_FILES['monfichier']['size'] <= 1000000)
            {
                // Testons si l'extension est autorisée
                $infosfichier = pathinfo($_FILES['monfichier']['name']);
                //foreach($infosfichier as $a) echo $a .'<br/>';
                $extension_upload = $infosfichier['extension'];
                //echo $extension_upload .'<br/>';
                $extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png');
                if (in_array($extension_upload, $extensions_autorisees))
                {
                   // On peut valider le fichier et le stocker définitivement
                   //tmp_name est pour remplacher le fichier est entrain d'attendre sur le repertoire temporaire du serveur a l'autre repertoire.
                   //$fichier = basename($_FILES['monfichier']['name']);
                   $fichier = $infosfichier['filename'] .time().'.'.$extension_upload;
                   $fichier = strtr($fichier,'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
                   //echo $fichier .' avec path = ' .$_FILES['monfichier']['tmp_name'] .'<br/>';
                   $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
                   echo $fichier .'<br/>';
                   if(move_uploaded_file($_FILES['monfichier']['tmp_name'], '../Uploads/' .$fichier)){
                   	echo "L'envoi a bien été effectué !";
					//ici tu insert en base de donne
				   }
				   else{
						echo'Erreur';   
				   }
                }
            }
         }
 ?>

Eléphanteau du PHP | 16 Messages

30 mai 2013, 23:40

Le fichier vieux etait encore écrasé. Et dans le navigateur, il s'affichait le message "Erreur".

Eléphanteau du PHP | 16 Messages

31 mai 2013, 00:13

Ca marche! Je te remercie bien! ghost5922

Mammouth du PHP | 619 Messages

31 mai 2013, 07:31

Bonjour,

si tu pense que ton problème et réglé merci de mettre ton sujet en résolu merci