更新时删除(删除,替换或取消链接)旧图像文件

时间:2019-06-16 05:40:03

标签: delete-file unlink remove-if

我已经在脚本中实现了(防弹)上传器。但是,当我尝试通过更改数据库表行来更新记录时,例如:

我想用新游戏图像更新并(替换)旧游戏图像(我正在使用重命名方法)!我发现新图像已成功上传并重命名,但是旧图像仍然存在在thumbs文件夹中。

这是我的代码:

$newthumb=false;
if($continue){
    $bulletProof = new ImageUploader\BulletProof;

    try{    
    if($_FILES && $_FILES['avaimage']['name']){
    $name3=strtolower($game_name);
    $name3=str_replace(' ', '-',$name3);
    $thumbnail=$name3.'-'.generateRandomString();
    $pic1=$bulletProof->uploadDir("../thumbs")->shrink(array("height"=>200, "width"=>200))->upload($_FILES['avaimage'],$thumbnail);
    if($pic1){
    $thumb=$pic1;
    }
    }
    }catch(\ImageUploader\ImageUploaderException $e){
     $error=$e->getMessage();
    $continue=false;
    }
}

我过去在更新时会删除旧文件,以防止磁盘空间耗尽并保持网站整洁且易于管理,但是通过这种方式,如果我更改游戏映像10次,我将获得10个差异映像,依此类推,这是一件坏事。

这就是我得到的:

dub_img

我可以解释如下:

1-用户编辑个人资料 2-用户为个人资料选择照片 3-用户单击“保存”以更新配置文件。

用户每次上传新照片(甚至是相同的个人资料照片)时,都会上传(并重命名)为新照片,并保持旧照片(上一张照片)不变。

屏幕截图#1 ٢٠١٩-٠٦-١٨ at ١٨-٠٠-٣١

٢٠١٩-٠٦-١٨ at ١٨-٠١-١٥

٢٠١٩-٠٦-١٨ at ١٨-٠١-٤٩

因此,在不删除旧照片的情况下上传了一张新照片,如果我有100万用户,并且每个用户上传10张照片(仅使用1张照片),那么我将得到900万个未使用的孤立文件。

即使刷新页面,也会上传新照片(由于浏览器历史记录)。 检查此#:我单击刷新4次(在离开页面之前)

٢٠١٩-٠٦-١٨ at ١٨-٠٦-١٤

我得到这个: ٢٠١٩-٠٦-١٨ at ١٨-٠٦-٣٢

您能想象其中有多少孤立文件吗?

将提供任何帮助。

我正在使用PHP PDO更新记录。

谢谢

1 个答案:

答案 0 :(得分:0)

好吧!谢谢大家的收看。我提出了一个解决方案,如下所示:

if($_FILES && $_FILES['avaimage']['name']){
//check current photo
$stmt = $db->prepare("SELECT avatar FROM users WHERE id=:uid LIMIT 1");
$stmt->bindValue(':uid', $uid, PDO::PARAM_INT);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
$icheck=$result[0];
if ($icheck['avatar']) {
@unlink("images/avatars/".$icheck['avatar']);
}else{
$error='Please check photo';
$continue=false;    
}
}

现在,如果用户刷新页面,则只能上传一张照片,并且只能添加一张照片。

谢谢。