Communauté Informatique NDFR.net

Communauté Informatique NDFR.net (http://www.ndfr.net/forums/index.php)
-   Programmation Web (HTML, PHP, ASP, Java, XML, etc.) (http://www.ndfr.net/forums/forumdisplay.php?f=65)
-   -   [PHP] Renommer une image uploadée (http://www.ndfr.net/forums/showthread.php?t=5903)

bastien 17-02-2005 11:10

[PHP] Renommer une image uploadée
 
Bonjour,
j'utilise un script qui permet d'uploader une image sur un serveur.
Seulement j'aimerais que cette image prenne le nom de la personne, à savoir la valeur $prenom ...

Mais je ne sais pas trop comment faire pour qu'elle se renomme.
Qui peut m'aider ?

Merci !

PHP Code:

if(empty($prenom) OR empty($email) OR empty($info) OR empty($fichier))
{
    echo
"Aucun champ ne peut rester vide.<br><a href='javascript:history.back(1)'>Cliquez ici pour revenir en arrière</a><br><br>";
    exit;
}
$destination="./trombi/"
$extension="jpg";  
if ((
$fichier&& $fichier != "none")) 

$verif=substr($fichier_name,-3); 
if (
$verif!="$extension"){ 
echo 
"Le fichier que vous voulez télécharger n'est pas au format jpg.<br>Veuillez recommencer"
} else { 
copy($fichier"$destination".$fichier_name); 
$nom $fichier_name
$message="<b>Fichier $fichier_name est téléchargé</b><br><br>"
echo 
"$message"



require(
"../confmysql.php");
$dbconnect mysql_connect($sql_serveur,$sql_user,$sql_password) or die ("erreur de connexion");
mysql_select_db($sql_bdd,$dbconnect) or die ("erreur de connexion base");
$date date("d-m-Y");
print 
"Votre inscription à bien été enregistrée. Elle sera confirmée par l'administrateur.";
mysql_query("INSERT INTO $sql_table_trombi (id,date,prenom,email,info,pseudo_photo) VALUES ('','$date','$prenom','$email','$info','$fichier_name') ") or die ("erreur insert ".mysql_error());
mysql_close(); 


Spycam 17-02-2005 11:59

Affecte $prenom à $fichier_name avant la fonction copy().

Sinon, utilise la fonction rename() :
Quote:

rename

Renomme un fichier
int rename (string oldname, string newname)
rename() rente de renommer le fichier oldname en newname.
rename() retourne TRUE en cas de succès et FALSE sinon.

Jogo 17-02-2005 13:49

PHP Code:

move_uploaded_file($_FILE["nominput"]['tmpname'], $uploaddir $prenom .$ext); 

où nominput est le nom de ton champ input de ton fichier html.
Voilà, moi j'uilise ça, et ça marche impec.

Quelques références :
move_uploded_file
Introduction à l'upload de fichiers sur php.net

Spycam 17-02-2005 14:09

Oui mais tant qu'à vouloir renommer auant utiliser la fonction rename() elle est faite pour ça !

Jogo 17-02-2005 14:12

Quote:

Originally Posted by Spycam
Oui mais tant qu'à vouloir renommer auant utiliser la fonction rename() elle est faite pour ça !

Si j'ai bien compris, il souhaite renommer l'image lorsqu'il l'upload. Il est alors inutile de d'abord l'uploader et ensuite la renommer, puisque la fonction move_uploaded_file() permet de déplacer le fichier uploadé du répertoire temporaire au répertoire souhaité avec n'importe quel nom. Autrement dit on fait d'une pierre deux coups. Inutile donc d'utiliser la fonction rename().

Spycam 17-02-2005 14:52

Ah, je n'avais pas vu les choses comme ça.
Enfin, là il est servi. ^^

bargio 17-02-2005 15:56

Une question au passage Zyk : si jamais tu as deux personnes qui ont le même prénom, tu fais comment ? parce que si j'ai bien tout suivi, ton code va écraser la précédente photo non ?

Sinon, personnellement, j'utilise aussi move_uploded_file chaque fois que je suis dans un cas comme celui là.

Seb

Spycam 17-02-2005 16:08

Tu peux faire quelque chose dans ce genre :
Code:

while(file_exists($destination.$fichier_name))
{
 $fichier_name.="+";
}

Comme ça tu évites d'écraser le précédent.

[EDIT] A faire avant copy() bien sur.

bargio 17-02-2005 16:11

Personnellement j'ajoute "time()" à chaque nom de fichier, comme ça je suis sûr qu'il n'y a pas de doublon et ça m'évite d'avoir à faire des vérifications dans tous les sens :)
Code:

$upload_folder        = "../images/trombi"; 
$fichier                = $_FILES["fichier"]["tmp_name"]; 
$photo                = time()."_".$_FILES["fichier"]["name"]; 
move_uploaded_file($fichier, $upload_folder.$photo);

À toi de voir ce que tu préfères.

Seb

bastien 17-02-2005 17:43

Oula !
Merci pour votre participation :)

Je vais tester vos bouts de codes !
Bargio, pour ta question, je comptais mettre le nom de la personne, suivis de son 'id' ... qui sera donc un numéro unique, et évitant ainsi les doublons :)
Vala !

Je teste, et je vous tiens au jus !

bargio 17-02-2005 17:49

Quote:

Originally Posted by zyk
Bargio, pour ta question, je comptais mettre le nom de la personne, suivis de son 'id' ... qui sera donc un numéro unique, et évitant ainsi les doublons :)

Ça marche aussi, mais ne connaissant pas ton code, je me demande si ça ne va pas te faire faire une requête supplémentaire pour récupérer l'id.

Si tout est logique le id est en auto increment non ? Donc pour savoir le id que tu vas donner à la personne lorsqu'elle s'inscrit au début, tu vas devoir aller chercher le dernier id de ta table et l'augmenter de 1. Alors qu'en rajoutant time() tu économises cette requête. Il me semble.

Maintenant il se peut très bien que ton code nécessite de toute façon pour autre chose d'aller dans la bdd et donc te faire faire une requête.

Seb

bastien 17-02-2005 17:59

Arf, bien vu !

bargio 17-02-2005 18:01

Pour une fois que je peux aider ;)

Seb

bastien 17-02-2005 18:07

J'utilise ton code Bargio, et il est nickel !
Mais ya un point ou je galère ...
Je n'arrive pas à ajouter le prénom dans le nom du fichier :-/

Tu vois genre prenom_time.ext !

bargio 17-02-2005 18:18

Si tu essayes :

$photo = time()."_".$prenom;

à la place de

$photo = time()."_".$_FILES["fichier"]["name"];

Est ce que ça marche ?

Seb


All times are GMT +2. The time now is 21:26.

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.