Probleme php pour renomer une photo
kouby
-
darkneurone Messages postés 39 Date d'inscription Statut Membre Dernière intervention -
darkneurone Messages postés 39 Date d'inscription Statut Membre Dernière intervention -
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>
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:
- Probleme php pour renomer une photo
- Google photo - Télécharger - Albums photo
- Google maps photo maison - Guide
- Photo filtre 7 gratuit - Télécharger - Retouche d'image
- Partage photo - Guide
- Légender une photo - Guide
3 réponses
Bonjour,
ça se passe ici :
ça renomme ton fichier en "promo_name"... tu changes en ce que tu veux.
ç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.
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>
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>
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é.
j'ai mis en commentaire la ligne $tmp_name.
et juste après, j'ai rajouté 'promo_' ci-dessous :
j'ai testé le code en local, les fichiers sont bien uploadé avec promo_nomimage.
bonne soirée.
a+
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+