所以我想在这里弄清楚这一切。我在下面看到了有关如何删除目录中所有文件的帖子,但是我想从此删除操作中排除占位符图像。我还没有找到我正在寻找的答案,所以这只是一个简短的问题。
在这里查看这个SO问题:Laravel File Storage delete all files in directory
答案 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');
或您喜欢的任何其他方式。尽您的想象力。