Удалить (удалить, заменить или отменить связь) старый файл изображения при обновлении - PullRequest
0 голосов
/ 16 июня 2019

Я реализовал (пуленепробиваемый) загрузчик в моем скрипте.Но когда я пытаюсь обновить свои записи, изменяя строку таблицы БД, например:

, я хочу обновить и (заменить) старый игровой образ новым игровым образом (я используюметод переименования)!Я обнаружил, что новое изображение успешно загружено и переименовано, но старое изображение все еще существует в папке 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 ١٨-٠١-٤٩

Итак, новая фотография загружена без удаления старой, если у меня есть 1 миллион пользователей, и каждый пользователь загрузил 10 фотографий (и толькоy использует 1), тогда я получу 9 миллионов неиспользованных потерянных файлов.

Даже если я обновлю страницу, загрузится новая фотография (из-за истории браузера).Проверьте это: я нажимаю кнопку обновления 4 раза (перед тем, как покинуть страницу)

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

И я получаю это: ٢٠١٩-٠٦-١٨ at ١٨-٠٦-٣٢.

Можете ли вы представить, как осиротелифайлы есть?

Любая помощь будет оценена.

Я использую PHP PDO для обновления записей.

Спасибо

1 Ответ

0 голосов
/ 19 июня 2019

Хорошо! Спасибо всем за просмотр. Я придумала решение, следующее:

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;    
}
}

Теперь, только одна фотография может быть загружена, и больше ничего нельзя добавить, если пользователь обновил страницу, там будет только одно изображение.

Спасибо.

...