Probleme php pour renomer une photo

Fermé
kouby - 2 avril 2008 à 16:36
darkneurone Messages postés 39 Date d'inscription dimanche 11 mars 2007 Statut Membre Dernière intervention 12 juin 2008 - 8 avril 2008 à 22:11
Bonjour,

Mon script php me permet d'envoyer une photo sur mon serveur dans un répertoire (img/) et quand on veut mettre une nouvelle photo l'ancienne est écrasée, jusque la tous va bien sauf que j'aimerais que la photo uploader soit renommer toujours par le même nom par exemple : promo.

Je vous fournie le code et dite moi se que je dois changer. Merci.


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
<title>upload</title>
</head>
<body>

<?php

function get_extension($nom) {
$nom = explode(".", $nom);
$nb = count($nom);
return strtolower($nom[$nb-1]);
}




$extensions_ok = array('jpg', 'jpeg');
// MimeType autorisé
/* 1 = GIF, 2 = JPG, 3 = PNG, 4 = SWF, 5 = PSD, 6 = BMP, 7 = TIFF (Ordre des octets Intel), 8 = TIFF (Ordre des octets Motorola), 9 = JPC, 10 = JP2, 11 = JPX, 12 = JB2, 13 = SWC, 14 = IFF */
$typeimages_ok = array(2);

$taille_ko = 1024;
$taille_max = $taille_ko*1024;
$dest_dossier = 'img/';
print_r($_FILES['photo']);
if(isset($_FILES['photo']))
{

if($_FILES['photo']['error'] !== "0") {
switch ($_FILES['photo']['error']) {
case 1:
$erreurs[] = "Votre image doit faire moins de $taille_ko Ko !";
break;
case 2:
$erreurs[] = "Votre image doit faire moins de $taille_ko Ko !";
break;
case 3:
$erreurs[] = "L'image n'a été que partiellement téléchargé.";
break;
case 4:
$erreurs[] = "Aucun fichier n'a été téléchargé.";
break; // Pas de 5, ne pas demander pourquoi ^^ (voir doc PHP)
case 6:
$erreur[] = "Un dossier temporaire est manquant.";
break;
case 7:
$erreurs[] = "échec de l'écriture du fichier sur le disque.";
break;
}
}

if(!$getimagesize = getimagesize($_FILES['photo']['tmp_name'])) {
$erreurs[] = "Le fichier n'est pas une image valide.";
}

if( (!in_array( get_extension($_FILES['photo']['name']), $extensions_ok ))
or (!in_array($getimagesize[2], $typeimages_ok )))
{
foreach($extensions_ok as $text) { $extensions_string .= $text.', '; }
$erreurs[] = 'Veuillez sélectionner un fichier de type '.substr($extensions_string, 0, -2).' !';
}

if( file_exists($_FILES['photo']['tmp_name'])
and filesize($_FILES['photo']['tmp_name']) > $taille_max)
{
$erreurs[] = "Votre fichier doit faire moins de $taille_ko Ko !";
}


if(!isset($erreurs) or empty($erreurs))
{
$dest_fichier = basename($_FILES['photo']['name']);
$tmpname = rename(tmp_name,promo_name);

}


if(move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier . $dest_fichier)) {
$valid[] = "Image uploadé avec succé (<a href='".$dest_dossier . $dest_fichier."'>Voir</a>)";
} else {
$erreurs[] = "Impossible d'uploader le fichier.<br />Veuillez vérifier que le dossier ".$dest_dossier." existe avec un chmod 755 (ou 777).";
}
}
?>

<form method="POST" action="" enctype="multipart/form-data">
<?php
if(!empty($erreurs)) {
echo '<ul class="erreur">';
foreach($erreurs as $erreur) {
echo '<li>'.$erreur.'</li>';
}
echo '</ul>';
}
if(!empty($valid)) {
echo '<ul class="validation">';
foreach($valid as $text) {
echo '<li>'.$text.'</li>';
}
echo '</ul>';
}

?>
<fieldset>
<legend>Envoi d'image</legend>
<p>
<label for="photo">Image : </label>
<input type="file" name="photo" id="photo" />
</p>
<p>
<input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $taille_max; ?>" />
<input type="submit" name="envoi" value="Envoyer l'image" />
</p>
</fieldset>
</form>
A voir également:

3 réponses

Personne ?
0
darkneurone Messages postés 39 Date d'inscription dimanche 11 mars 2007 Statut Membre Dernière intervention 12 juin 2008 12
2 avril 2008 à 19:07
Bonjour,

ça se passe ici :

if(!isset($erreurs) or empty($erreurs))
{
$dest_fichier = basename($_FILES['photo']['name']);
$tmpname = rename(tmp_name,promo_name);

} 


ça renomme ton fichier en "promo_name"... tu changes en ce que tu veux.
0
MERCI !
0
Désoler dark mais ça ne marche pas...

Je t'envoie de nouveau le code avec tes modifs :

Merci pour ton aide.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
<title>upload</title>
</head>
<body>

<?php

function get_extension($nom) {
$nom = explode(".", $nom);
$nb = count($nom);
return strtolower($nom[$nb-1]);
}




$extensions_ok = array('jpg', 'jpeg');
// MimeType autorisé
/* 1 = GIF, 2 = JPG, 3 = PNG, 4 = SWF, 5 = PSD, 6 = BMP, 7 = TIFF (Ordre des octets Intel), 8 = TIFF (Ordre des octets Motorola), 9 = JPC, 10 = JP2, 11 = JPX, 12 = JB2, 13 = SWC, 14 = IFF */
$typeimages_ok = array(2);

$taille_ko = 1024;
$taille_max = $taille_ko*1024;
$dest_dossier = 'img/';
print_r($_FILES['photo']);
if(isset($_FILES['photo']))
{

if($_FILES['photo']['error'] !== "0") {
switch ($_FILES['photo']['error']) {
case 1:
$erreurs[] = "Votre image doit faire moins de $taille_ko Ko !";
break;
case 2:
$erreurs[] = "Votre image doit faire moins de $taille_ko Ko !";
break;
case 3:
$erreurs[] = "L'image n'a été que partiellement téléchargé.";
break;
case 4:
$erreurs[] = "Aucun fichier n'a été téléchargé.";
break; // Pas de 5, ne pas demander pourquoi ^^ (voir doc PHP)
case 6:
$erreur[] = "Un dossier temporaire est manquant.";
break;
case 7:
$erreurs[] = "échec de l'écriture du fichier sur le disque.";
break;
}
}

if(!$getimagesize = getimagesize($_FILES['photo']['tmp_name'])) {
$erreurs[] = "Le fichier n'est pas une image valide.";
}

if( (!in_array( get_extension($_FILES['photo']['name']), $extensions_ok ))
or (!in_array($getimagesize[2], $typeimages_ok )))
{
foreach($extensions_ok as $text) { $extensions_string .= $text.', '; }
$erreurs[] = 'Veuillez sélectionner un fichier de type '.substr($extensions_string, 0, -2).' !';
}

if( file_exists($_FILES['photo']['tmp_name'])
and filesize($_FILES['photo']['tmp_name']) > $taille_max)
{
$erreurs[] = "Votre fichier doit faire moins de $taille_ko Ko !";
}


if(!isset($erreurs) or empty($erreurs))
{

$dest_fichier = basename($_FILES['photo']['name']);
$tmp_name = rename(tmp_name,promo_name);

}

if(move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier . $dest_fichier)) {
$valid[] = "Image uploadé avec succé (<a href='".$dest_dossier . $dest_fichier."'>Voir</a>)";
} else {
$erreurs[] = "Impossible d'uploader le fichier.<br />Veuillez vérifier que le dossier ".$dest_dossier." existe avec un chmod 755 (ou 777).";
}
}

?>

<form method="POST" action="" enctype="multipart/form-data">
<?php
if(!empty($erreurs)) {
echo '<ul class="erreur">';
foreach($erreurs as $erreur) {
echo '<li>'.$erreur.'</li>';
}
echo '</ul>';
}
if(!empty($valid)) {
echo '<ul class="validation">';
foreach($valid as $text) {
echo '<li>'.$text.'</li>';
}
echo '</ul>';
}

?>
<fieldset>
<legend>Envoi d'image</legend>
<p>
<label for="photo">Image : </label>
<input type="file" name="photo" id="photo" />
</p>
<p>
<input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $taille_max; ?>" />
<input type="submit" name="envoi" value="Envoyer l'image" />
</p>
</fieldset>
</form>
0
darkneurone Messages postés 39 Date d'inscription dimanche 11 mars 2007 Statut Membre Dernière intervention 12 juin 2008 12
8 avril 2008 à 22:11
Je n'avais pas mis de correction ^^ je t'indiquais juste où se situait le problème.

Si j'ai bien compris, tu veux renommer les images "uploadé" en : promo_NOMDETONIMAGE ?

Si c'est le cas, voilà le code... j'ai un peu modifié.

if(!isset($erreurs) or empty($erreurs))
{

$dest_fichier = basename($_FILES['photo']['name']);
//$tmp_name = rename(tmp_name,promo_name); 

}


j'ai mis en commentaire la ligne $tmp_name.

et juste après, j'ai rajouté 'promo_' ci-dessous :

if(move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier .'promo_'.$dest_fichier)) {
$valid[] = "Image uploadé avec succé (<a href='".$dest_dossier . 'promo_'.$dest_fichier."'>Voir</a>)";


j'ai testé le code en local, les fichiers sont bien uploadé avec promo_nomimage.

bonne soirée.
a+
0