Maison  >  Questions et réponses  >  le corps du texte

Correction du problème de téléchargement d'image PHP : remplacez l'image précédente pour télécharger une nouvelle image dans plusieurs publications

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!

P粉788765679P粉788765679422 Il y a quelques jours445

répondre à tous(1)je répondrai

  • P粉936509635

    P粉9365096352023-09-15 00:33:10

    Vous pouvez utiliser la fonction uniqid() pour vous assurer que chaque image téléchargée a un nom unique.

    répondre
    0
  • Annulerrépondre