pb renommer en php

pb renommer en php - PHP - Programmation

Marsh Posté le 22-06-2005 à 16:50:35    

Bonjour, je suis débutant en php.
Je veux faire une page pour renommer un fichier, choisi à pertir d'un explorateur. Voici le code que j'utilise :
 

Code :
  1. <html>
  2. <head><title>Renommer un fichier</title></head>
  3. <body>
  4. <?
  5. if (isset($_FILES['fichier']['name']) && isset($_POST['nom']))
  6. {
  7. if(!rename($_FILES['fichier']['tmp_name'],$_POST['nom']))
  8. {
  9.  echo "Renommer impossible.";
  10. }
  11. }
  12. ?>
  13. <p>
  14. <h1>Renommer</h1>
  15. <hr>
  16. <div align=center><hr>
  17. <form enctype="multipart/form-data" action="index2.php" method="POST">
  18. <input type="file" name="fichier" size="90">
  19. <p>
  20. renommer en : <input type="text" size="15" maxlength="15" name="nom">
  21. <input type="submit" name="transfert" value="Renommer">
  22. </form>
  23. </body>
  24. </html>


 
Le truc c'est qu'à mon avis c'est surtout pas comme ça qu'il faut faire car j'ai adapté un script pour uploader un fichier sur le serveur. Et puis le résultat est le suivant : fichier non renommé mais recopié ds la racine web, et bug à l'ouverture du fichier. Obligé de fermer l'explorateur au CTlAltSupr...
merci à vous.

Reply

Marsh Posté le 22-06-2005 à 16:50:35   

Reply

Marsh Posté le 22-06-2005 à 16:51:47    

Vire le "enctype="multipart/form-data", ça évitera que le fichier ne soit uploadé, ce qui est complètement inutile si c'est juste un renommage. Tu retrouvera alors le nom de ton fichier dans $_POST['fichier']


Message édité par FlorentG le 22-06-2005 à 16:51:59
Reply

Marsh Posté le 22-06-2005 à 16:59:03    

merci pour ta rapidité.
J'ai fait ce que tu m'as dis. La il ne renomme plus rien du tout. Il ne touche pas au fichier source, et il me met le message d'erreur.  :??:

Reply

Marsh Posté le 22-06-2005 à 17:00:09    

C'est normal, le border $_FILES ne fonctionne plus. Faut récupérer le nom du fichier via $_POST

Reply

Marsh Posté le 22-06-2005 à 17:00:52    

Avec le script suivant :  
 

Code :
  1. <html>
  2. <head><title>Renommer un fichier</title></head>
  3. <body>
  4. <?
  5. if (isset($_POST['fichier']) && isset($_POST['nom']))
  6. {
  7. if(!rename($_POST['fichier'],$_POST['nom']))
  8. {
  9.  echo "Renommer impossible.";
  10. }
  11. }
  12. ?>
  13. <p>
  14. <h1>Renommer</h1>
  15. <hr>
  16. <div align=center><hr>
  17. <form action="index2.php" method="POST">
  18. <input type="file" name="fichier" size="90">
  19. <p>
  20. renommer en : <input type="text" size="15" maxlength="15" name="nom">
  21. <input type="submit" name="transfert" value="Renommer">
  22. </form>
  23. </body>
  24. </html>

Reply

Marsh Posté le 22-06-2005 à 17:01:13    

et la touche F2 t'as essayé ?  :whistle:

Reply

Marsh Posté le 22-06-2005 à 17:02:06    

On se croise....
Donc je ça marche pas avec le $_POST['fichier']...

Reply

Marsh Posté le 22-06-2005 à 17:02:08    

Suivant les navigateur, $_POST['fichier'] contiendra soit le chemin entier, soit juste le nom... Ca dépend :(

Reply

Marsh Posté le 22-06-2005 à 17:02:24    

oui... :??:

Reply

Marsh Posté le 22-06-2005 à 17:03:31    

je suis sous mozilla sous win...

Reply

Marsh Posté le 22-06-2005 à 17:03:31   

Reply

Marsh Posté le 22-06-2005 à 18:08:10    

Bon bah alors ça marche si je spécifie le path ds le rename ds le précédent script:  
 

Code :
  1. ...
  2. if(!rename("D:\\".$_POST['fichier'],"D:\\".$_POST['nom']))
  3. ...


 
Mais je suis hyper loin de ce que je voulais faire....
Je veux renommer à partir de n'importe quel endroit du path...
exemple : en fait au premier input faudrait prendre $path/toto.txt
                  au deuxième input je prends titi.txt
et je renomme en $path/titi.txt...
comment prendre le $path à partir de la fenêtre d'explorateur de fichier?
 
Vous me dites si je suis pas clair  :D lol

Reply

Marsh Posté le 22-06-2005 à 20:42:06    

Y'a aucun moyen :( Ca dépend des navigateurs, comme dit... Sauf si t'es en environnement maîtrisé genre Intranet, pouet

Reply

Marsh Posté le 22-06-2005 à 21:30:04    

Merci pour votre bonne volonté ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed