web-dev-qa-db-fra.com

Laravel Stockage de fichiers supprimer tous les fichiers dans le répertoire

Est-il possible de supprimer tous les fichiers d'un répertoire spécifique? J'essaie d'effacer tous mes fichiers des fonds de mes dossiers créés dans storage\app\backgrounds, mais dans docs ne semble pas utiliser de méthode pour tout supprimer.

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

Je ne pense pas que ce soit la meilleure façon de résoudre ce problème. Mais j'ai résolu mon appel

use Illuminate\Filesystem\Filesystem;

Puis initiez une nouvelle instance

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

Vous pouvez utiliser la méthode Filesystem cleanDirectory

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

Veuillez consulter la documentation pour plus d'informations:

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

3
Michael Bausano

Dans Laravel 5.7 vous pouvez vider un répertoire en utilisant la façade Storage comme suit:

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

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

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

La méthode delete() peut recevoir un tableau de fichiers à supprimer, tandis que deleteDirectory() supprime un répertoire (et son contenu) à la fois.

Je ne pense pas que ce soit une bonne idée de supprimer puis de recréer le répertoire, car cela pourrait entraîner des conditions de concurrence indésirables.

1
Soulriser
    use Illuminate\Support\Facades\Storage;

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

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

Je gère cela en supprimant tout le répertoire car je n'en ai pas besoin. Mais si, dans tous les cas, vous avez besoin du répertoire, vous devez le recréer:

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