Есть ли способ удалить все файлы в определенном каталоге. Я пытаюсь очистить все мои файлы в фонах созданной папки в хранилище \ app \ фоны, но в документы Кажется, нет способа удалить все.
Storage::delete('backgrounds\*.jpg');
Я не думаю, что это лучший способ решить эту проблему. Но я решил свое призвание
use Illuminate\Filesystem\Filesystem;
Затем инициируйте новый экземпляр
$file = new Filesystem;
$file->cleanDirectory('storage/app/backgrounds');
Вы можете использовать метод файловой системы cleanDirectory
$success = Storage::cleanDirectory($directory);
Пожалуйста, смотрите документацию для получения дополнительной информации:
https://laravel.com/api/5.5/Illuminate/Filesystem/Filesystem.html#method_cleanDirectory
В Ларавел 5.7 Вы можете очистить каталог, используя Storage
фасад вроде так:
Storage::delete(Storage::files('backgrounds'));
$dirs = Storage::directories('backgrounds');
foreach ($dirs as $dir) {
Storage::deleteDirectory($dir);
}
delete()
метод может получить массив файлов для удаления, в то время как deleteDirectory()
удаляет один каталог (и его содержимое) одновременно.
Я не думаю, что это хорошая идея, чтобы удалить, а затем заново создать каталог, поскольку это может привести к нежелательным условиям гонки.
Я справляюсь с этим, удаляя весь каталог, так как он мне не нужен. Но если, в любом случае, вам нужен каталог, вам следует просто создать его заново:
$d = '/myDirectory'
Storage::deleteDirectory($d);
Storage::makeDirectory($d);
use Illuminate\Support\Facades\Storage;
// Get all files in a directory
$files = Storage::allFiles($dir);
// Delete Files
Storage::delete($files);