Renommer un fichier après upload...
Posté : 19 juil. 2007, 13:04
... Eh oui, encore une bête question sur "comment renommer un fichier uploadé via un formulaire ?"
Mon problème est toutefois un peu plus "complexe" (je n00b) qu'il n'y parait, car je souhaiterai que le fichier uploadé prenne le nom d'une variable (correspondant en fait à un nom d'utilisateur précédemment sélectionné
)
Je ne suis peut-être pas très clair, je vais donc vous fournir quelques bribes de pages, en espérant que vous pourrez m'aider à résoudre ce problème
Dans le haut de ma page (avant </head>)
Vous avez la soluce miracle ?
Je suis là si vous manquez d'informations ! (je peux également poster la page dans son intégralité si certaines choses vous échappent, suffit de me demander !)
Mon problème est toutefois un peu plus "complexe" (je n00b) qu'il n'y parait, car je souhaiterai que le fichier uploadé prenne le nom d'une variable (correspondant en fait à un nom d'utilisateur précédemment sélectionné
Je ne suis peut-être pas très clair, je vais donc vous fournir quelques bribes de pages, en espérant que vous pourrez m'aider à résoudre ce problème
Dans le haut de ma page (avant </head>)
// Constantes pour l'upload des imgaes
$folder = '../images/'; // Repertoire cible
$extension = 'jpg'; // Extension du fichier sans le .
$max_size = 100000; // Taille max en octets du fichier
$width_max = 120; // Largeur max de l'image en pixels
$height_max = 180; // Hauteur max de l'image en pixels
$nom_file = $_FILES['fichier']['name'];
$taille = $_FILES['fichier']['size'];
$tmp = $_FILES['fichier']['tmp_name'];
Mon formulaire
<form enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<table class="categories" align="center" cellpadding="3" style="font-size:11px">
<tr style="color:<?php echo $stylecol_titre; ?>;background-color:<?php echo $cadre_bgc_titre; ?>"><td align="center" colspan="3" style="font-size:12px">Gestion des photos (<strong><?php echo (isset($row['nom']) ? $row['nom'] : '?'); ?></strong>)</td></tr>
<tr><td align="right">Fichier :</td><td><input type="file" name="fichier" /></td>
<td rowspan="2" width="70%">L'upload est uniquement valable avec des fichiers ayant une extension <strong>*.jpg</strong>, tous les autres formats (*.bmp, *.png, *.gif et même *.jpeg) d'image seront systématiquent refusés !
<br /><br />Limitations d'upload : <strong>Taille :</strong> <?php echo $max_size/1000; ?>Ko maximum - <strong>Dimensions :</strong> <?php echo $width_max; ?> (L) par <?php echo $height_max; ?> (H).
<br /><br />Par ailleurs, veillez à bien sélectionner un nom dans la liste ci-dessus avant d'envoyer le fichier !</td></tr>
<tr><td align="center" colspan="2" width="30%"><input type="submit" name="action" value="Go go go !" style="width:100px" /></td></tr>
</table>
</form>
Le script d'upload a proprement parlé
else if(isset($_POST['action']) and $_POST['action'] == "Go go go !") {
// On vérifie si le champ est rempli
if(!empty($_FILES['fichier']['name'])) {
// On vérifie l'extension du fichier
if(substr($nom_file, -3) == $extension) {
// On récupère les dimensions du fichier
$infos_img = getimagesize($_FILES['fichier']['tmp_name']);
// On vérifie les dimensions et taille de l'image
if(($infos_img[0] <= $width_max) && ($infos_img[1] <= $height_max) && ($_FILES['fichier']['size'] <= $max_size)) {
// Si c'est OK, on teste l'upload
if(move_uploaded_file($tmp , $folder . $nom_file)) {
// Si upload OK alors on affiche le message de réussite
echo '<b>Image uploadée avec succès !</b>';
echo '<hr />';
echo '<b>Fichier :</b> ', $_FILES['fichier']['name'], '<br />';
echo '<b>Taille :</b> ', $_FILES['fichier']['size'], ' octets<br />';
echo '<b>Largeur :</b> ', $infos_img[0], ' px<br />';
echo '<b>Hauteur :</b> ', $infos_img[1], ' px<br />';
echo '<hr />';
echo '<br /><br />';
}
else {
// Sinon on affiche une erreur système
echo '<b>Problème lors de l\'upload !</b><br /><br /><b>', $_FILES['fichier']['error'], '</b><br /><br />';
}
}
else {
// Sinon on affiche une erreur pour les dimensions et taille de l'image
echo "<script type=\"text/javascript\"> alert(\"Veuillez vérifier la taille ainsi que les dimensions de l'image !\");</script>";
}
}
else {
// Sinon on affiche une erreur pour l'extension
echo "<script type=\"text/javascript\"> alert(\"Désolé, mais le fichier $nom_file ne comporte pas l\'extension .jpg !\");</script>";
}
}
else {
// Sinon on affiche une erreur pour le champ vide
echo "<script type=\"text/javascript\"> alert(\"Le champ du formulaire est vide !\");</script>";
}
mysql_close(); // Fermeture de la connexion
}
Ce que j'aimerai donc, c'est affecter à l'image uploadée le nom contenu dans $row['nom'] que j'appelle par exemple dans le <tr> du tableau Vous avez la soluce miracle ?
Je suis là si vous manquez d'informations ! (je peux également poster la page dans son intégralité si certaines choses vous échappent, suffit de me demander !)