Rename()

Résolu
Sinistrus Messages postés 1010 Date d'inscription   Statut Membre Dernière intervention   -  
Sinistrus Messages postés 1010 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous !

Le code ci-dessous me crée un dossier et renomme le fichier uploader... cependant je rencontre un soucis :

$PathImage = '../../../images/produits/';
if(!is_dir($PathImage)){mkdir($PathImage, 0705, true);}

$_FILES['Fr_Image']['name'];
$_FILES['Fr_Image']['type'];
$_FILES['Fr_Image']['size'];
$_FILES['Fr_Image']['tmp_name'];
$_FILES['Fr_Image']['error'];

if ($_FILES['Fr_Image']['error'] > 0) $erreur = "<div class=\"Erreur\">Erreur lors du transfert de l'image</div>";
if ($_FILES['Fr_Image']['size'] > $maxsize) $erreur = "<div class=\"Erreur\">Le fichier est trop gros</div>";
$extensions_valides = array('png');
$extension_upload = strtolower(substr(strrchr($_FILES['Fr_Image']['name'], '.')  ,1)  );

if (in_array($extension_upload,$extensions_valides) ) echo "<div class=\"Message\">Extension de l'image correcte</div><br />";
$image_sizes = getimagesize($_FILES['Fr_Image']['tmp_name']);

if ($image_sizes[0] > $maxwidth OR $image_sizes[1] > $maxheight) $erreur = "<div class=\"Erreur\">Image trop grande</div>";

$nom 		= $PathImage.$_FILES['Fr_Image']['name'];
$resultat 	= move_uploaded_file($_FILES['Fr_Image']['tmp_name'],$nom);
$NouvImage 	= $PathImage.$Fr_Code.".".$extension_upload;

rename($PathImage.$nom, $PathImage.$NouvImage);

if ($resultat) echo "<div class=\"Message\">Transfert de l'image réussi</div><br />";

Si le dossier n'existe pas, le script le crée et renomme bien le fichier.
Mais si le dossier existe, il ne le renomme plus... est-ce normal ?

Merci de votre coup de main.


A voir également:

2 réponses

Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
Salut,

Si le dossier existe mais qu'il n'a pas été créé par ton script, le problème peut venir des droits appliqués au dossier. Si le dossier a été créé par ton script cela ne devrait pas poser problème.

Ta variable $NouvImage est affectée en commençant par $PathImage :
$NouvImage = $PathImage.$Fr_Code.".".$extension_upload;
// soit : $NouvImage = '../../../images/produits/' . $Fr_Code.".".$extension_upload;

Puis lors de l'utilisation de cette variable dans la fonction rename(), tu concatènes une nouvelle fois $PathImage :
rename($PathImage.$nom, $PathImage.$NouvImage);
// soit : rename($PathImage.$nom, '../../../images/produits/' . '../../../images/produits/' . $Fr_Code.".".$extension_upload);

Le chemin n'est donc pas correct.

Tu aurais dû avoir un message d'erreur PHP te l'indiquant, n'oublie pas d'activer l'affichage des erreurs en développement.

Enfin, la fonction move_uploaded_file() revient déjà à renommer le fichier temporaire uploadé, tu peux donc directement renommer le fichier avec cette fonction à la place d'utiliser rename() :
$NouvImage = $PathImage.$Fr_Code.".".$extension_upload;
$resultat = move_uploaded_file($_FILES['Fr_Image']['tmp_name'], $NouvImage);


Bonne journée
1
Sinistrus Messages postés 1010 Date d'inscription   Statut Membre Dernière intervention   17
 
Merci beaucoup Pitet !

Tu as été vraiment explicite. Ça fonctionne :)
0