Behebung des Problems beim Hochladen von PHP-Bildern: Ersetzen Sie das vorherige Bild, um ein neues Bild in mehreren Beiträgen hochzuladen
P粉788765679
P粉788765679 2023-09-14 11:27:48
0
1
456

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!

P粉788765679
P粉788765679

Antworte allen(1)
P粉936509635

您可以使用uniqid()函数来确保每个上传的图像都有一个唯一的名称。

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage