gpt4 book ai didi

laravel - 在 Laravel 中使用 Storage facade 删除通配 rune 件

转载 作者:行者123 更新时间:2023-12-05 05:59:28 26 4
gpt4 key购买 nike

有没有一种方法可以让您通过 Laravel 中的 Storage facade 删除带有通配符的文件?

use Illuminate\Support\Facades\Storage;

Storage::disk('foo')->delete('path/TO_DELETE*');

我可能有这样一个列表

path/TO_DELETE_1
path/TO_DELETE_2
path/TO_KEEP_1
path/TO_PROCESS_1

但我只想删除文件。我想尽可能避免路径操作

最佳答案

假设如果您有以 a_1.jpg,a_2.jpg 开头的文件,则

 $files = Storage::disk("public")->allFiles();

foreach ($files as $file){

if(Str::startsWith($file,"a_")){

Storage::disk('images')->delete($file);
}

}

或用于多个文件夹搜索

$directories = Storage::disk('public')->directories();

foreach ($directories as $directory){
$files= Storage::disk('public')->allFiles($directory);

foreach ($files as $file){

if(Str::startsWith($file,$directory."/"."a_")){

Storage::disk('public')->delete($file);
}

}
}

另一种方法是使用 File facade。

File::delete(File::glob(storage_path('app/public/*/a_*.*')));

例如你在 storage/app/pubic/ 中有多个文件夹,那么你可以这样指定。

app/public/*/a_*.*' 

这里

  1. 第一个 * 是 public 文件夹中的任何文件夹。

  2. a_* 表示任何以a_开头的文件。

  3. .* 是任何扩展名

对于最后一个,我从这篇文章中得到了帮助引用:Delete files with wildcard in Laravel

关于laravel - 在 Laravel 中使用 Storage facade 删除通配 rune 件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68131194/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com