Changer d'avatar AJAX|PHP
Posté : 25 avr. 2017, 15:28
Bonjour à toutes et à tous,
J'ai un formulaire d'upload d'avatar :
Qui est traité avec de l'ajax :
Et du PHP :
Quelqu'un saurait comment je pourrais supprimer tous fichiers existants dans un dossier plutôt que pointer vers un ? Je pense que ça pourrait résoudre mon problème non ?
Bonne journée à tous.
J'ai un formulaire d'upload d'avatar :
<form action="functions/pdp.php" method="post" enctype="multipart/form-data" id="pdp">
<label for="file" class="label-file" style="background-image: url('./pdp/<?php echo $_SESSION['prenom']; if($handle = opendir('./pdp/'.$_SESSION['prenom'].'/')) { while(false !== ($entry = readdir($handle))){ if($entry != '.' && $entry != '..' && $entry != 'index.php'){ echo "/".$entry; }}}?>')"></label>
<input id="file" name="mon_image" class="input-file" type="file">
<a href="#" id="validPhoto" data-toggle="modal" data-target="#valider" style="display:none;"></a>
</form>
Qui est traité avec de l'ajax :
<script>
$('#pdp').submit(function(event){
var formUrl = $(this).attr("action");
$.ajax(
{
url : formUrl,
type: "POST",
contentType: false,
cache: false,
processData:false,
data: new FormData(this),
success:function(data, textStatus, jqXHR)
{
location.reload();
}
});
event.preventDefault();
});
$('#validPhotoModal').click(function(){
$('#pdp').submit();
});
</script>
Et du PHP :
<?php
session_start();
if(isset($_FILES['mon_image'])){
$targetDir = "../pdp/".$_SESSION['prenom']."/";
$fileName = $_FILES['mon_image']['name'];
$info = new SplFileInfo($fileName);
$ext = $info->getExtension();
$file_titre = 'pdp.'.$ext;
$targetFile = $targetDir.$file_titre;
if(file_exists($targetFile)) {
unlink($targetFile);
move_uploaded_file($_FILES['mon_image']['tmp_name'],$targetFile);
}
move_uploaded_file($_FILES['mon_image']['tmp_name'],$targetFile);
}
else{
echo "Aucune image sélectionnée";
}
?>
Mon code fonctionne bien à un détail près : quand je change d'extension (c'est à dire que je passe d'un avatar JPG à PNG) l'image n'est pas supprimée (évidemment puisqu'on parle de supprimer un fichier existant à l'extension jpg..) et ainsi le label n'affiche pas correctement la photo de profil puisqu'il existe désormais deux fichiers (hors on lui demande de prendre comme background, l'image contenue dans le dossier pointé).Quelqu'un saurait comment je pourrais supprimer tous fichiers existants dans un dossier plutôt que pointer vers un ? Je pense que ça pourrait résoudre mon problème non ?
Bonne journée à tous.