Как удалить все НЕиспользуемые изображения из моего каталога загрузок, если они не сохранены в базе данных в PHP - PullRequest
0 голосов
/ 18 апреля 2019

Я использую laravel 4.2

У меня более 1000 изображений в проекте;эти изображения были заняты пользователями хоста после нескольких загрузок.Пожалуйста, отредактируйте образец примера таким образом, чтобы он удалял все изображения, кроме изображений, в которых хранятся как имя, так и файл.

<code>public function del_image()
    {

        $scan = scandir('uploads/evidence');


        foreach($scan as $file)
        {
            if (!is_dir($file))
            {
                $list = DB::table('evidence')
                ->where('profile_img',$file)
                ->select('profile_img')->get();

              echo '<pre>';print_r($list); echo '
';}} // echo $ list. "
";// echo '
';print_r($list); echo '
';}

Спасибо.

Ответы [ 3 ]

0 голосов
/ 18 апреля 2019

этот код я обновил до:

$scan = scandir('uploads/evidence');
        $files =  DB::table('evidence')->pluck('profile_img');
        $protectTheseImages = [];


        foreach((array)$files as $file) {
            $protectTheseImages[] = $file;
        }

        //dd($protectTheseImages);

        $diff = array_diff($scan, $protectTheseImages);
        foreach($diff as $file) {
            if (!is_dir($file)) {
                echo $file."<br>";
                //unlink($file);
            }
        }

но, строка echo $file."<br>"; просто показать все изображения в каталоге !!!

0 голосов
/ 19 апреля 2019

Я думаю, вы должны использовать этот код.

$scan = scandir('uploads/evidence');
$files =  DB::table('evidence')->pluck('profile_img');
$protectTheseImages = [];


foreach((array)$files as $file) {
    $protectTheseImages[] = $file;
}

//dd($protectTheseImages);

$diff = array_diff($scan, $protectTheseImages);
foreach($diff as $file) {
    if (!is_dir($file)) {
        echo $file."<br>";

        $image_path = '/folder_path/uploads/evidence/'.$file; 
        unlink($image_path);
    }
}

Надеюсь, этот код поможет вам.

0 голосов
/ 18 апреля 2019
    $scan = scandir('uploads/evidence');
    $files =  DB::table('evidence')->pluck('profile_img');
    $protectTheseImages = [];
    foreach($files as $file) {
        $protectTheseImages[] = $file;
    }

    $diff = array_diff($scan, $protectTheseImages);
    foreach($diff as $file) {
        if (!is_dir($file)) {
            unlink($file);
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...