renommer un fichier uploadé - PHP - Programmation
Marsh Posté le 06-05-2007 à 12:53:28
salut
donc pour ça, perso je ne vois pas comment php pourrait savoir que t'as 312 est la dernière.
tu peux aussi les compter et faire un +1, mais si un jours tu en supprimes, je te dis pas le bordel (tu supprime une, au prochain upload la dernière sera ecrasée).
moi je vois bien un tri par nom, tu choppe le plus gros et tu fais un +1
Marsh Posté le 06-05-2007 à 13:04:08
ReplyMarsh Posté le 06-05-2007 à 13:17:56
tu parcours ton répertoire, tu mets les fichiers dans un tableau, tu lance un sort du tableau (php.net est ton ami pour les fonctions de tri de tableaux).
tu choppe le dernier enregistrement du tableau (forcément un 312 dans ton cas) et l'image uploadée aura ça + 1.
Exemple :
Code :
|
il te reste a trier $liste
à mon avis ça marche comme méthode, mais je trouve que c'est un peu du bidouillage, donc a toi de voir soit tu prends, soit tu cherche plus propre/performant
Marsh Posté le 06-05-2007 à 13:20:11
http://fr.php.net/max
S'il faut, tu splites tes chaines de caractères et tu recomposes le tableau avec uniquement les valeurs numérique.
Sinon, un tri alphabétique du tableau (voir du coté des fonction "sort" ) et tu récupère le dernier élément du tableau +1.
Marsh Posté le 06-05-2007 à 13:39:47
Ou encore :
Code :
|
Par contre là si tu en supprime un, il sera recréé par la suite.
Marsh Posté le 06-05-2007 à 13:40:58
ok, la méthode du array me convient, sauf que j'ai du mal à en extraire la valeur maxi, autant avant sort() que max(), vu que ça me retourne le "index.html" que j'ai mis dans le repertoire.
ensuite à priori j'ai juste à faire un explode avec le ".jpg" pour extraire le numéro et faire un +1
Marsh Posté le 06-05-2007 à 13:44:28
pour n'avoir que les images (donc pas le index.html) tu rajoute dans le if qui parcours le rep une condition par rapport a l'extension (tu la choppe avec strpos je crois) genre && $ext == 'jpg' et là t'es sur que dans ton tableau y'a que les images
Marsh Posté le 06-05-2007 à 13:46:26
Code :
|
Marsh Posté le 06-05-2007 à 13:55:12
dwogsi a écrit :
|
voilà ça c'est très proche de ce que je veux faire
sauf que:
Warning: Wrong parameter count for max() in C:\wamp\www\monsite\test\test.php on line 12
(ligne 12 contient ---> $prochain = max($liste)+1
j'ai essayé avec $prochain = max($liste); même erreur.
edit:
print_r($liste);
ne retourne rien.
Marsh Posté le 06-05-2007 à 13:58:53
Code :
|
Ca devrait marcher. Je suppose...
En supposant que tes noms de fichiers ne contiennent pas de point.
Marsh Posté le 06-05-2007 à 14:02:00
dwogsi a écrit :
|
yep. merci dwogsi, merci naeh, merci c0wb0y
Marsh Posté le 06-05-2007 à 18:41:35
dwogsi a écrit :
|
php.net ne recommande pas ton écriture : http://fr.php.net/manual/fr/function.readdir.php
while ($f = readdir($dir)) à remplacer par while (false !== ($file = readdir($dir)))
je ne sais pas pourquoi, ss doute une Q? de charge du serveur ?
Marsh Posté le 06-05-2007 à 20:25:19
Citation : toute entrée dans le nom serait évalué à FALSE causera l'arrêt de la boucle (exemple, un répertoire nommé 0). |
Se produit donc dans de rares cas mais peut tout de même se produire. Ceci dit quand on sait quels genre de noms vont prendre les fichiers et répertoire on peut s'affranchir de cette écriture.
Marsh Posté le 06-05-2007 à 12:47:06
Bonjour,
j'ai codé un petit formulaire d'upload mais j'aimerai faire renommer automatiquement le nom du fichier (image) lorsqu'il est uploadé.
l'image est uploadée dans un dossier appellé "img" qui contient des images telles que:
1.jpg, 2.jpg, 3.jpg, 4.jpg, 5.jpg, ..., 88.jpg, 89.jpg, ... etc
Il faudrait que le nom du fichier soit "dernier numéro de l'image"+1.
exemple: si la dernière image est 312.jpg, le nom attribué devra être 313.jpg.
Puis-je avoir une esquisse du code et fonctions qui vont ouvrir le dossier img, parcourir les images pour en extraire uniquement le numéro (i.e "312".jpg) puis renommer le fichier uploadé?
merci d'avance.