envoi + nom de fichier en php
Bonjour,
je souhaite "uploader" un fichier et surtout pouvoir le renommer. Je souhaite qu'il prenne le nom de la personne (via un input) à qui appartient le fichier en question.
Je suis en plein apprentissage du code PHP et après de multiples recherches, j'ai bien compris comment faire pour traiter l'envoi mais j'ai toujours des difficultés à renommer le fichier sans créer une autre erreur.
Le dernier code que j'ai modifié me permet bien de renommer le fichier mais le problème c'est qu'il me fait disparaitre mon extension. Je retrouve donc un fichier qui a bien de la personne mais qui est d'un format inconnu.
Je vous remercie par avance pour toutes vos réponses.
Code HTML.
<html> <body>
<form method="POST" action="30.php" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="500000" />
<p><label for="nom">Nom :</label><input type="text" name="nom" /></p>
<p><label for="photo">Fichier :</label><input type="file" name="fichier" /></p>
<p><input type="submit" name="envoi" value="Envoyer les fichiers" /></p>
</form>
</body></html
Traitement PHP
<?php
if(isset($_FILES['fichier']))
{
unset($erreur);
$extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
$taille_max = 1000000;
$dest_dossier = 'fichiers/';
// vérifications
if( !in_array( substr(strrchr($_FILES['fichier']['name'], '.'), 1), $extensions_ok ) )
{
$erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg !';
}
elseif( file_exists($_FILES['fichier']['tmp_name'])
and filesize($_FILES['fichier']['tmp_name']) > $taille_max)
{
$erreur = 'Votre fichier doit faire moins de 500Ko !';
}
if(!isset($erreur))
{
$dest_fichier = basename($_FILES['fichier']['name']);
$dest_fichier = strtr($dest_fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$dest_fichier = $_POST ['nom'];
move_uploaded_file($_FILES['fichier']['tmp_name'], $dest_dossier . $dest_fichier);
}
}
?>