J'ai un problème concernant la fonctionnalité de téléchargement d'images de mon application PHP. La situation est la suivante :
J'ai un formulaire où un utilisateur peut créer une publication et télécharger une image liée à la publication. Lorsque je télécharge mon premier message avec une image en pièce jointe, tout fonctionne bien et l'image est correctement enregistrée sur le serveur dans un dossier appelé Uploads et enregistrée sous un nom (par exemple, post1_image.jpg). Cependant, le problème survient lorsque j'essaie de télécharger un deuxième message avec une image différente portant le même nom que la première image (par exemple, post1_image.jpg). Au lieu de l'enregistrer en tant que nouvelle image, elle remplace l'image précédente associée au premier message. Comment puis-je modifier mon code PHP pour m'assurer que chaque image téléchargée a un nom unique et n'écrase pas les images existantes ? Voici une version simplifiée du code PHP que j'utilise actuellement pour gérer les téléchargements d'images :
<?php include "config.php"; // 与服务器建立连接 // 文件上传 if (isset($_FILES['fileToUpload'])) { $Errors = array(); $File_Name = $_FILES['fileToUpload']['name']; $File_Size= $_FILES['fileToUpload']['size']; $File_Tmp = $_FILES['fileToUpload']['tmp_name']; $File_Type = $_FILES['fileToUpload']['type']; $File_ext = end(explode('.',$File_Name)); $Extensions = array('jpeg','jpg','png'); if (in_array($File_ext,$Extensions) === false) { $Errors[] = "不允许上传此文件。您只能上传jpeg,jpg和png文件"; } if ($File_Size > 2097152) { $Errors[] = "您不能上传大于2MB的文件"; } if (empty($Errors) == true) { move_uploaded_file($File_Tmp,"upload/". $File_Name); }else{ print_r($Errors); die(); } } session_start(); $Title = mysqli_real_escape_string($conn,$_POST["post_title"]); $Description = mysqli_real_escape_string($conn,$_POST["postdesc"]); $Category = mysqli_real_escape_string($conn,$_POST["category"]); $date = date("D M,Y"); $Auther = $_SESSION['name']; $sql = "insert into post (title,description,category,post_date,author,post_img) values ('{$Title}', '{$Description}', {$Category}, '{$date}', '{$Auther}','{$File_Name}');"; $sql .= "Update category set post = post+1 where category_id = $Category;"; // $result = mysqli_multi_query($conn, $sql) or die ("Query unsucceful"); if (mysqli_multi_query($conn, $sql)) { mysqli_close($conn); header('Location: http://'.$hostname.'/cms/admin/post.php'); }else { echo "查询失败"; } ?>
Merci beaucoup pour toute idée ou suggestion sur la façon de résoudre ce problème ! Merci!
Vous pouvez utiliser la fonction uniqid() pour vous assurer que chaque image téléchargée a un nom unique.