Renomage automatique des fichiers

[Résolu]
Signaler
Messages postés
172
Date d'inscription
lundi 22 mai 2006
Statut
Membre
Dernière intervention
19 janvier 2011
-
Messages postés
172
Date d'inscription
lundi 22 mai 2006
Statut
Membre
Dernière intervention
19 janvier 2011
-
Bonjour a tous

je voudrais savoir si vous avez un petit bout de code, pour renomer des fichiers automatique, exemple j'upload une image appelé MikeF.jpg et faudrais que ça se renome hockey_1.jpg, lorsque j'upload une deuxième image ça fasse hockey_2.jpg.

j'ai trouver ça mais je c'est pas si c'est conforme:
$extension_upload=substr(strrchr($_FILES['fichier']['name'], '.')  ,1);

donc si il y a des gens qui ont déja utilisé se genre a chose, je suis preneur pour une petit explication Merci

5 réponses

Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Hello,

Gretata = > ton idée est viable.
Une autre est de greffer un timestamp, comme ça ce sera tjrs unique (sauf gros manque de bol) et en plus tu pourras connaître l'ordre d'upload.
$sNewFileName = time().$sOldFileName;
Ou un truc dansd le genre.

Aka => je n'ai rien contre les liens vers des exemples sur d'autres sites si c'est pertinent. Mais si c'est pour mettre un lien vers ujn site qui raconte beaucoup de conneries, montre des codes horribles et faux, autant s'abstenir.
Si tu es le webmaster de ce site : désolé, mais les astuces et autres présentes sur ce site sont dangereuses pour les débutants.
Si tu es simplement un membre/visiteur de ce site : fuis!! Fuis-le vite!

Pour ce qui suivrait le lien :
<?php
//
N'oubliez pas de configurer ce script en renseignant les informations nécessaires et modifiables
//
lisiting de tous les fichiers
$tableau ="";
$nbr_img=0;
$handle=@opendir("membres/images");
// Chemin du dossier

while ($fichier = @readdir($handle)){
$extension=substr($fichier,-3);

//
Vérifications de l'extension du fichier
// Ce script n'accèpera
donc que les fichiers ayants une des extensions suivantes : gif, jpg ou encore
png
if($fichier!="." && $fichier!=".."
&& (eregi("gif",$extension)
|| eregi("jpg",$extension)
|| eregi("png",$extension))){
$listing[$fichier]=$nbr_img;
}
$nbr_img++;
// Incrémentation

}
// Fin du while
$nbr_img
=($nbr_img-2); //
Cette variable contient le nombre de fichiers du dossier
?>
Je commente afin d'éviter toute ambiguité :
$tableau = "";
Déjà on commence mal. Pourquoi ""?? $tableau=''; suffit. Mais bon, rien de grave.
$handle=@opendir("membres/images");

Aie. Je n'ai rien contre le masquage des erreurs via un @...SAUF quand on ne gère pas les erreurs. Et là, c'est le cas, on ne gère que dalle. On masque juste les erreurs qu'on a peut de commettre : c'est un cache misère.
while ($fichier = @readdir($handle)){
C'est marqué, pourtant, en gros sur la doc php.net...on utilise ici les opérateurs typés.while (false !($fichier readdir ($handle)))
histoire que, si on a un fichier qui s'appelle 0, ou '0', ou ' ', etc...notre boucle ne s'arrête pas bêtement!
Et on ne masque toujours pas les erreurs si on ne les gère pas...
$extension=substr($fichier,-3);
Wow, j'ai rien à dire...
if($fichier!="." && $fichier!=".."
&& (eregi("gif",$extension)
|| eregi("jpg",$extension)
|| eregi("png",$extension))){
$listing[$fichier]=$nbr_img;
}
Pfiou...déjà, c'est plus élégant un if (!in_array ($fichier, array ('.', '..'))).
Ensuite, eregi() pour trouver une succession de 3 lettres dans une chaîne...argh.strpos () est nettement plus rapide, plus léger, plus doux...et surtout, plus adapté!
Ensuite, récupérer l'extrension ne veut pas dire qu'on va récupérer le vrai type d'un fichier. Si je crée un fichier nommé test.php, puis que je le renomme en test.jpg, il ne se transforme pas miraculeusement en fichier jpeg! Ca reste un fichier php!

Bref...
Messages postés
259
Date d'inscription
samedi 13 décembre 2003
Statut
Membre
Dernière intervention
22 novembre 2010
2
Salut,


Je pense que tu dois utiliser bien evidemment une variable pour prendre ton fichier et l'uploader a tel endroit de ton FTP.


Pour le renommage utilise cette base :


if(!rename("MikeF.jpg", "hockey_1.jpg"))
{

    echo"Impossible de renommer.";

}

Ensuite pour connaitre le nombre d'image que tu as plusieurs solutions :

Celle-ci si toutes tes images sont dans le
meme dossier :
http://www.tonwebmaster.com/zones_webmasters/astuce_php_countfilesdir.php

Ou alors en creant un fichier qui ajoute +1 a chaque fois que tu ajoutes une nouvelle images.

Je ne sais pas si j'ai pu repondre a toutes tes questions, surtout continues a dire si ca ne vas toujours pas !
Messages postés
259
Date d'inscription
samedi 13 décembre 2003
Statut
Membre
Dernière intervention
22 novembre 2010
2
Ah désolé d'avoir fourni un site dangereux enfin du moins pour toi mais si tu es administrateur ici ce n'est pas pour rien donc j'écouterais ton conseil à l'avenir :)

Et non je ne suis pas administrateur de ce site, j'ai mon propre site que je gère ne t'en fais pas :-p

@+
Messages postés
172
Date d'inscription
lundi 22 mai 2006
Statut
Membre
Dernière intervention
19 janvier 2011

bonjour a tous !!

merci beaucoup de vos réponses, je n'est pas eu le temps de regarder si cela marcher,
autout cas merci , je regarde le plus vite possible
Messages postés
172
Date d'inscription
lundi 22 mai 2006
Statut
Membre
Dernière intervention
19 janvier 2011

voila comment j'ai fait:

//---------partie renomage
    $extention=substr($nom_img,-3);
    $nom_img=time();
    $nom_img="espace_".$nom_img.".".$extention;

merci [auteurdetail.aspx?ID=58031 malalam] pour tes explications et aussi a [auteurdetail.aspx?ID=206167 Also know as]

merci beaucoup et désolé de ne pas avoir répondu plustôt,

Merci bonne journée