我已经在脚本中实现了(防弹)上传器。但是,当我尝试通过更改数据库表行来更新记录时,例如:
我想用新游戏图像更新并(替换)旧游戏图像(我正在使用重命名方法)!我发现新图像已成功上传并重命名,但是旧图像仍然存在在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个差异映像,依此类推,这是一件坏事。
这就是我得到的:
我可以解释如下:
1-用户编辑个人资料 2-用户为个人资料选择照片 3-用户单击“保存”以更新配置文件。
用户每次上传新照片(甚至是相同的个人资料照片)时,都会上传(并重命名)为新照片,并保持旧照片(上一张照片)不变。
屏幕截图#1
因此,在不删除旧照片的情况下上传了一张新照片,如果我有100万用户,并且每个用户上传10张照片(仅使用1张照片),那么我将得到900万个未使用的孤立文件。
即使刷新页面,也会上传新照片(由于浏览器历史记录)。 检查此#:我单击刷新4次(在离开页面之前)
我得到这个: 。
您能想象其中有多少孤立文件吗?
将提供任何帮助。
我正在使用PHP PDO更新记录。
谢谢
答案 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;
}
}
现在,如果用户刷新页面,则只能上传一张照片,并且只能添加一张照片。
谢谢。