Renomage automatique des fichiers

Résolu
gretata Messages postés 172 Date d'inscription lundi 22 mai 2006 Statut Membre Dernière intervention 19 janvier 2011 - 14 févr. 2007 à 15:20
gretata Messages postés 172 Date d'inscription lundi 22 mai 2006 Statut Membre Dernière intervention 19 janvier 2011 - 20 févr. 2007 à 08:55
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

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
15 févr. 2007 à 22:15
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...
3
Also know as Messages postés 259 Date d'inscription samedi 13 décembre 2003 Statut Membre Dernière intervention 22 novembre 2010 2
14 févr. 2007 à 18:25
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 !
0
Also know as Messages postés 259 Date d'inscription samedi 13 décembre 2003 Statut Membre Dernière intervention 22 novembre 2010 2
15 févr. 2007 à 23:14
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

@+
0
gretata Messages postés 172 Date d'inscription lundi 22 mai 2006 Statut Membre Dernière intervention 19 janvier 2011
20 févr. 2007 à 08:14
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gretata Messages postés 172 Date d'inscription lundi 22 mai 2006 Statut Membre Dernière intervention 19 janvier 2011
20 févr. 2007 à 08:55
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

 
0
Rejoignez-nous