Renomer une image

Eléphant du PHP | 170 Messages

30 mars 2007, 06:01

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

Eléphant du PHP | 136 Messages

30 mars 2007, 08:26

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";
	}
}
L'informatique apporte des solutions à des problèmes qui ne se posaient pas avant qu'elle existe.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

30 mars 2007, 10:03

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)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 170 Messages

30 mars 2007, 13:33

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 !';
     }
}
?>

Mammouth du PHP | 19672 Messages

30 mars 2007, 13:58

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
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 804 Messages

30 mars 2007, 14:01

salut

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

ViPHP
AB
ViPHP | 5818 Messages

30 mars 2007, 16:25

Bonjour,

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

mais fait attention à la remarque de Ryle

Mammouth du PHP | 804 Messages

30 mars 2007, 16:36

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 :)

Eléphant du PHP | 170 Messages

30 mars 2007, 17:00

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 !';
     }
}
?>

Mammouth du PHP | 804 Messages

31 mars 2007, 03:55

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 */


ViPHP
AB
ViPHP | 5818 Messages

31 mars 2007, 12:24

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));

Mammouth du PHP | 804 Messages

31 mars 2007, 13:56

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

Mammouth du PHP | 804 Messages

31 mars 2007, 14:00

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"); 


} 

ViPHP
AB
ViPHP | 5818 Messages

31 mars 2007, 17:06

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...

Mammouth du PHP | 804 Messages

31 mars 2007, 23:15

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.