Probleme renommer un fichier en PHP

Fermé
fr - 19 févr. 2007 à 11:03
 polygon - 13 nov. 2008 à 21:57
Salut a tous!
voila, je souhaite uploader des images sur mon FTP via un formulaire puis automatiquement les renommés en les incrémentants.
J'ai donc fais mon formulaire, creer une page php qui va traiter les informations pour l'uploader sur le serveur. Jusque la tout fonctionne correctement, mais pour renommer les fichiers, sa marche pô!




Code : PHP
$tableau="";
$nbr_img=0;
$handle=@opendir("upload");
while ($fichier = @readdir($handle))
{
$extension=substr($fichier,-3);

if($fichier!="." && $fichier!=".." && (eregi("gif",$extension) || eregi("jpg",$extension) || eregi("png",$extension)))
{
$listing[$fichier]=$nbr_img;
}
$nbr_img++;
}
$nbr_img =($nbr_img-2);


ce code me permet de scanner le dossier d'upload.





Code : PHP

$nom = $_FILES['fichier']['name'];
$nbre_image = $nbr_img++;

if(@rename("/upload/" . $nom . " ", "/upload/" . $nbre_image . ""))
{
echo "l'image a été renommer";
}
else
{
echo "l'image n'a pas été renommer. ";
}

Ici, c'est le script qui est censé renommer les fichier uploader et l'incrémenter en fonction du nombre de fichier se trouvant dans le dossier d'upload.




Donc, en gros, le fichier s'upload bien dans le bon dossier, mais le fichier n'est pas renommer. Je ne sais pas d'ou peut venir ce probleme.
Je n'est testé qu'en local, je ne sais pas si ça peut venir de la mais bon...si quelqu'un sais...
A voir également:

2 réponses

GallyNet Messages postés 434 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 15 décembre 2008 386
20 févr. 2007 à 09:17
Ton probleme vient tout simple que $_FILES['fichier']['name'] ne contient pas le nom du fichier tel qu'il est sur le serveur, mais le nom du fichier avant l'envoie.
Car PHP, enregistre le fichier sous un nom temporaire, dans un repertoire temporaire.
Il faut donc faire :
if(@rename($_FILES['fichier']['tmp_name'], "/upload/" . $nbre_image . "")) 
1
Bonjour,

Voici un code pour créer un fichier sur le serveur et le renomer.
Je crée un fichier temporaire .temp sur le serveur en lui indiquant son dossier que j'ai crée et qui sera definitif.
Le fichier sera aussitot renomer en .php avec la fonction rename().
J'écris dans ce fichier <?php include("page.inc.php"); ?> qui ne sera que du texte au moment de l'écriture mais
losque j'appelerai ce fichier qui sera renomer avec une variable de session issue d'un formulaire par exemple "chemin/".$variableDeSession.".php" il m'affichera ce que contient page.inc.php

ce code marche bien sur wamp et chez mon hebergeur.

$tmpfile = tempnam(realpath("chemin/"), "nomfichierTemporaire") ;
$fp = fopen($tmpfile, "w");
fwrite($fp, '<?php include("page.inc.php"); ?>');
$fichier=$tmpfile;
fclose($fp);
rename("".$fichier."","chemin/".$variableDeSession.".php");
1