web-dev-qa-db-ja.com

Laravel File Storageはディレクトリ内のすべてのファイルを削除します

特定のディレクトリ内のすべてのファイルを削除する方法はありますか。 storage\app\backgroundsに作成されたフォルダの背景にあるすべてのファイルをクリアしようとしていますが、 docs ではすべてを削除する方法がありません。

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

これがこれを解決する最善の方法であるとは思わない。しかし、私は私の呼び出しを解決しました

use Illuminate\Filesystem\Filesystem;

次に、新しいインスタンスを開始します

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

ファイルシステムのメソッドcleanDirectoryを使用できます

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

詳細については、ドキュメントを参照してください。

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

6
Michael Bausano
    use Illuminate\Support\Facades\Storage;

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

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

Laravel 5.7では、次のようにStorageファサードを使用してディレクトリを空にできます。

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

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

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

delete()メソッドは削除するファイルの配列を受け取り、deleteDirectory()は一度に1つのディレクトリ(およびそのコンテンツ)を削除します。

不要な競合状態が発生する可能性があるため、ディレクトリを削除してから再作成することはお勧めできません。

2
Soulriser

Laravel 5.8では、次を使用できます。

Storage::deleteDirectory('backgrounds');

含めることを忘れないでください:

use Illuminate\Support\Facades\Storage;
1
cespon
//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
0

不要なディレクトリ全体を削除することでこれを処理しています。ただし、いずれにしても、ディレクトリが必要な場合は、ディレクトリを再作成するだけで十分です。

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