Ich habe ein Problem mit der Bild-Upload-Funktion meiner PHP-Anwendung. Die Situation ist wie folgt:
Ich habe ein Formular, in dem ein Benutzer einen Beitrag erstellen und ein Bild hochladen kann, das sich auf den Beitrag bezieht. Wenn ich meinen ersten Beitrag mit einem angehängten Bild hochlade, funktioniert alles einwandfrei und das Bild wird korrekt auf dem Server in einem Ordner namens Uploads und unter einem Namen (z. B. post1_image.jpg) gespeichert. Das Problem tritt jedoch auf, wenn ich versuche, einen zweiten Beitrag mit einem anderen Bild mit demselben Namen wie das erste Bild hochzuladen (z. B. post1_image.jpg). Anstatt es als neues Bild zu speichern, ersetzt es das vorherige Bild, das mit dem ersten Beitrag verknüpft ist. Wie kann ich meinen PHP-Code ändern, um sicherzustellen, dass jedes hochgeladene Bild einen eindeutigen Namen hat und keine vorhandenen Bilder überschreibt? Hier ist eine vereinfachte Version des PHP-Codes, den ich derzeit für das Hochladen von Bildern verwende:
<?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 "查询失败"; } ?>
Vielen Dank für alle Erkenntnisse oder Vorschläge zur Lösung dieses Problems! Danke!
您可以使用uniqid()函数来确保每个上传的图像都有一个唯一的名称。