使用Laravel删除文件夹中除'placeholder.png'以外的所有文件

时间:2018-08-21 02:34:04

标签: php laravel laravel-5

所以我想在这里弄清楚这一切。我在下面看到了有关如何删除目录中所有文件的帖子,但是我想从此删除操作中排除占位符图像。我还没有找到我正在寻找的答案,所以这只是一个简短的问题。

在这里查看这个SO问题:Laravel File Storage delete all files in directory

1 个答案:

答案 0 :(得分:1)

delete()接受要删除的文件数组。因此,一种可能的解决方案是使用通配符选择器列出目录,然后从数组中过滤出排除列表。

$filesForDelete = array_filter(glob("path/to/files/*"), function($file) {
    return false === strpos($file, 'placeholder.png');
});

Storage::delete($filesForDelete);

当然,您的过滤器表达式可能会变得更好,更广泛,或者可以通过许多其他方式做同样的事情。

例如,您可以创建如下的帮助函数:

function deleteAllButFile($exclude)
{
    $filesForDelete = array_filter(glob("path/to/files/*"), function($file) use ($exclude) {
        return false === strpos($file, $exclude);
    });
    Storage::delete($filesForDelete);
}

// Call it like
deleteAllButFile('placeholder.png');

或您喜欢的任何其他方式。尽您的想象力。