Laravel File Storage删除目录中的所有文件

时间:2017-10-30 02:28:20

标签: php laravel laravel-5.5 file-storage

有没有办法删除特定目录中的所有文件。我正在尝试清除存储\ app \ backgrounds中创建的文件夹背景中的所有文件,但在docs中似乎没有删除所有文件的方法。

Storage::delete('backgrounds\*.jpg');

8 个答案:

答案 0 :(得分:15)

我不认为这是否是解决这个问题的最佳方法。但我解决了我的呼唤

use Illuminate\Filesystem\Filesystem;

然后启动新实例

$file = new Filesystem;
$file->cleanDirectory('storage/app/backgrounds');

答案 1 :(得分:4)

只需使用它即可。

 File::cleanDirectory($direction);

答案 2 :(得分:3)

您可以使用Filesystem方法cleanDirectory

$success = Storage::cleanDirectory($directory);

请参阅文档以获取更多信息:

https://laravel.com/api/5.5/Illuminate/Filesystem/Filesystem.html#method_cleanDirectory

答案 3 :(得分:2)

Laravel 5.7 中,您可以使用Storage门面清空目录,如下所示:

Storage::delete(Storage::files('backgrounds'));

$dirs = Storage::directories('backgrounds');

foreach ($dirs as $dir) {
    Storage::deleteDirectory($dir);
}

delete()方法可以接收要删除的文件数组,而deleteDirectory()一次可以删除一个目录(及其内容)。

我认为删除并重新创建目录不是一个好主意,因为这可能导致不必要的竞争状况。

答案 4 :(得分:0)

我正在通过删除整个目录来解决此问题,因为我不需要它。但是,无论如何,如果您需要该目录,只需重新创建即可:

$d = '/myDirectory'
Storage::deleteDirectory($d);
Storage::makeDirectory($d);

答案 5 :(得分:0)

    use Illuminate\Support\Facades\Storage;

    // Get all files in a directory
    $files =   Storage::allFiles($dir);

    // Delete Files
    Storage::delete($files);

答案 6 :(得分:0)

Laravel 5.8 中,您可以使用:

Storage::deleteDirectory('backgrounds');

记住要包括:

use Illuminate\Support\Facades\Storage;

答案 7 :(得分:0)

//You can use Illuminate\Filesystem\Filesystem and it's method cleanDirectory('path_to_directory).
For Example:
    $FolderToDelete = base_path('path_to_your_directory');
    $fs = new \Illuminate\Filesystem\Filesystem;
    $fs->cleanDirectory($FolderToDelete);   
    //For Delete All Files From  Given Directory.
    $succes = rmdir($FolderToDelete);
    //For Delete Directory
    //This Method Works for me

#Laravel 
#FileManager
#CleanDirectory