PHP:更新新图像仍然显示旧图像


PHP : Updating new image still showing the old image

所以我每次创建一个新的文件夹,如果文件夹不存在使用mdkir

$dir_name = '../../assets/contestant_double/'.$event_id.'eventPortfolio/';
if(!is_dir($dir_name)){
    mkdir('../../assets/contestant_double/'.$event_id.'eventPortolfio/', 0777, true);
}

现在我正在尝试更新我在该文件夹上上传的图像。当我查看指定目录

时,它工作正常
$static_name = $event_id."d".$getThed1d2."_contestant_";
$extension = pathinfo($name, PATHINFO_EXTENSION);
$theRealName = $static_name.$lastDigit.".".$extension;
echo $theRealName;

但是当我试图获得图像时,为什么它仍然显示旧图像而不是新图像?

<img class="img_here_edit" src="../assets/contestant_double/'.$event_id.'eventPortfolio/'.$soc_sql['images'].'" width="100%" >

我怀疑,但我不确定它在我的新创建的目录mdkir有0777,因为我的代码在我的其他常规文件夹工作正常吗?如何解决

use unlink(");

为什么不删除旧图像并创建和上传同名的新图像呢?

尝试在图像url的末尾发送一个随机id来获取最新的图像,像这样:

<img class="img_here_edit" src="../assets/contestant_double/'.$event_id.'eventPortfolio/'.$soc_sql['images'].'?'.time().'" width="100%" >

你看到的是浏览器缓存上的图片,所以你必须清除浏览器缓存。但是,您不会每次更换图片时都这样做,这太繁琐和不切实际了。我也遇到过同样的情况,我是这样做的。像这样创建filename + time().jpg。所以当我要替换旧照片的时候,我从文件夹中加载,删除它,然后放置新的。看…

    function uploadphoto( $id, $ref ) {
    $find = $ref.'_';
    $data = $_POST[ 'image' ];
    list( $type, $data ) = explode( ';', $data );
    list( , $data ) = explode( ',', $data );
    $data = base64_decode( $data );
    $imageName = $ref.'_'.time().'.jpg'; // new picture name
    
    foreach(glob('uploads/'.$find.'*.*') as $filename){
        $localizacion = $_SERVER['DOCUMENT_ROOT'].'/'. $filename ;
            chmod('./uploads', 0777);
            unlink($localizacion);
    }
    file_put_contents( 'uploads/' . $imageName, $data );

}