Page 1 sur 2

Renomer une image

Posté : 30 mars 2007, 06:01
par chris51200
Bonjour à tous.
Je voudrais connaitre la methode pour renomer une image lors d'upload par formulaire, je m'explique:
J'ai une image appelée image1.gif qui se trouve sur une page de mon site. Je mets à jour cette image par formulaire mais je voudrais que si je choisis une image qui va se nommer image24.jpeg par exemple, elle devienne image1.gif et ainsi ecrase l'image d'origine
Merci de vos reponse

Posté : 30 mars 2007, 08:26
par Dominic
l'image à télécharger étant reconnue sous $image
if(isset($image)) {
	if (move_uploaded_file ( $image, $image_name  ))
	{
	$newimage = "image1.gif";
	rename($image_name,$newimage);
	print "L'image est maintenant chargée et renommée";
	}
}

Posté : 30 mars 2007, 10:03
par Ryle
Tu peux effectivement renommer ton image lors du move_uploaded_file(). Fais attention toutefois si tu donnes l'extension .gif à un fichier dont le type est jpeg, tu peux avoir des soucis avec certains éditeurs ou navigateurs... :)
Changer le nom ou l'extension d'un fichier ne change en rien son format initiale (type mime)

uploal de photo

Posté : 30 mars 2007, 13:33
par chris51200
merci mais de vos reponses mais je suis débutant!
ou dois je incorporer ce script?
voici mon code:
le upload.htm:
<form method="POST" action="upload.php" enctype="multipart/form-data">
     <!-- On limite le fichier à 100Ko -->
     <input type="hidden" name="MAX_FILE_SIZE" value="100000">
     Fichier : <input type="file" name="avatar">
     <input type="submit" name="envoyer" value="Envoyer le fichier">
</form>
le upload.php:
<?php
if(isset($_FILES['avatar']))
{ 
     $dossier = 'upload/';
     $fichier = basename($_FILES['avatar']['name']);
     if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
     {
          echo 'Upload effectué avec succès !';
     }
     else //Sinon (la fonction renvoie FALSE).
     {
          echo 'Echec de l\'upload !';
     }
}
?>

Posté : 30 mars 2007, 13:58
par Cyrano
Modération :
chris51200, afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.

Des indications sont disponibles sur la manière de mettre en forme vos messages dans la FAQ

Posté : 30 mars 2007, 14:01
par dogmongo
salut

Dans quel but tu veux renomer tes images ? on peu peu être te conseiller ue autre solution plus a amont ?

Posté : 30 mars 2007, 16:25
par AB
Bonjour,

Explications ici
http://www.phpfrance.com/forums/voir_re ... php#179305

mais fait attention à la remarque de Ryle

Posté : 30 mars 2007, 16:36
par dogmongo
ah ok bon alors essai de voir mon scripts disponible sur phpcs.com

http://www.phpcs.com/auteur/ROTTWEILER/6929.aspx


tu retrouvera surement ma fiche et mes sources, dont une qui est pour upload elle s'appel "UPLOAD D'IMAGE AVEC OPTION (RENOMER - CHOIX EXTENSION - ENREGISTREMENT DANS LA TABLE MYSQL)", ce scripts à fait un carton je ne comprend pas pourquoi il est très sommaire pourtant :lol:
Peu être qu'il t'aidera aussi :)

Posté : 30 mars 2007, 17:00
par chris51200
voici mon code :
je voudrais savoir où je peux incorporer le code pour renomer mon image selectionner par le formulaire en "image1"
<?php
if(isset($_FILES['avatar']))
{ 
     $dossier = 'upload/';
     $fichier = basename($_FILES['avatar']['name']);
     if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
    {
          echo 'Upload effectué avec succès !';
     }
     else //Sinon (la fonction renvoie FALSE).
     {
          echo 'Echec de l\'upload !';
     }
}
?>

Posté : 31 mars 2007, 03:55
par dogmongo
oh bein c'est plutôt simple si j'ai bien compris
 

if(isset($_FILES['avatar'])) {  

     $avatar = $_FILES['avatar'] ;

     $newname =($avatar.$ext);

     $chemin = "upload/".$newname;

     move_uploaded_file($_POST["file"]["tmp_name"],$chemin);

    //facultatif ca dépend de ton serveur 
    //chmod(upload/'.$newname, 0755);

}else{
             
        print("<script language=javascript>\n");
        print("alert('Votre image n a pas été ajoutée.')");
        print("</script>\n");


}

essai aussi de récupérer l'extenssion d'origine du fichier genre

$ext= strstr($photo_origine, "."); /* détermine l'extension du fichier */


Posté : 31 mars 2007, 12:24
par AB
Dans ton exemple, tu indiques que la variable $fichier est égale au nom du fichier téléchargé sur l'ordinateur client
//(pas besoin de basename)
$fichier = $_FILES['avatar']['name'];
.
Et c'est cette même valeur que tu donnes comme nom de fichier sur le seveur distant
if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier))
Donc tu n'a rien renommé.

Si tu mets
$fichier = 'toto'.$_FILES['avatar']['name'];
// à la place de $fichier = $_FILES['avatar']['name'];
le fichier sur le serveur aura le nom du fichier original précédé de 'toto'

Si besoin, pour récupérer l'extension et la mettre en minuscule:
$ext = strtolower(substr(strrchr($fichier,'.'),1));

Posté : 31 mars 2007, 13:56
par dogmongo
si , la vairable avatare c'est justement le nom du fichier que tu aura récupéré du formulaire et $ext c'est l'extention

$newname deviens le nom du fichier compet avec l'extenssion soit (

image1.jpg

image1 est arrivé de ton formulaire par la variable $avatar

Posté : 31 mars 2007, 14:00
par dogmongo
oh la la c'est vraie , désolé j'ai posté ca dans le sirage en pleine nuit , vire carément la ligne elle ne sert à rien
if(isset($_FILES['avatar'])) {   

          $newname =($_FILES['avatar'].$ext); 

     $chemin = "upload/".$newname; 

     move_uploaded_file($HTTP_POST_FILES["file"]["tmp_name"],$chemin); 

    //facultatif ca dépend de ton serveur  
    //chmod(upload/'.$newname, 0755); 

}else{ 
              
        print("<script language=javascript>\n"); 
        print("alert('Votre image n a pas été ajoutée.')"); 
        print("</script>\n"); 


} 

Posté : 31 mars 2007, 17:06
par AB
oh la la c'est vraie , désolé j'ai posté ca dans le sirage en pleine nuit
Pas mieux depuis le début du jour d'après ton dernier code :roll:

1/Si son champ de formulaire de type file se nomme 'avatar' : if(isset($_FILES['avatar'])), il ne se nomme pas 'file' : move_uploaded_file($HTTP_POST_FILES["file"]["tmp_name"],$chemin);

2/On utilise plus depuis assez longtemps la syntaxe $HTTP_POST_FILES mais $_FILES (cela ne nuit cependant pas au bon fonctionnement du script)

3/$_FILES['avatar'] retourne un tableau et non pas le nom du fichier téléchargé, sans l'extension, ( $newname =($_FILES['avatar'].$ext); )

Le nom du fichier avec l'extension est $_FILES['avatar']['name']

Pour récupérer le nom du fichier sans l'extension
$nom_sans_extension = substr($_FILES['avatar']['name'], 0, strrpos($_FILES['avatar']['name'],'.'));
d'où le code :
if(isset($_FILES['avatar']))
{ 
     $dossier = 'upload/';

    $nom_sans_extension = substr($_FILES['avatar']['name'], 0, strrpos($_FILES['avatar']['name'],'.'));

//ajout d'une extension exemple '.gif'

 $ext = '.gif';

 $nom_avec_nouvelle_extension = $nom_sans_extension.$ext;

     if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $nom_avec_nouvelle_extension)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
    {
          echo 'Upload effectué avec succès !';
     }
     else //Sinon (la fonction renvoie FALSE).
     {
          echo 'Echec de l\'upload !';
     }
} 
Mais je ne vois pas bien l'utilité de modifier l'extension des fichiers...

Posté : 31 mars 2007, 23:15
par dogmongo
Oui je sais , j'ai gardé mes mauvaises abitude mais le principe est le bon !

Pour l'extention c'est toi qui vois :D

Pour $_FILES['avatar'] rien a voir
il est claire que ce sera une variable $_POST['avatare'] , j'ai juste copier coller ton code pour te montré les ligne du dessous

j'ai réalisé un code pour permettre l'opload de fichier multi extention avec la possibilité de renomer, ca fonctionne très bien.