Как проверить, существует ли каталог с Storage:: facade в laravel?

Что такое копия:

if (!File::exists($path))

используя Storage:: в Laravel 5.1?

Кто-нибудь?

Ответ 1

Попробуйте следующее:

// To check if File exists in Laravel 5.1
$exists = Storage::disk('local')->has('file.jpg');

// To check if File exists in Laravel 5.2
$exists = Storage::disk('local')->exists('file.jpg');

Ответ 3

$exists = Storage:: disk ('local') → has (' dirname');

Ответ 4

в ларавеле 5.4 $ exists = Storage:: disk ('public') → существует ('images/test_image.jpg');  - с 'public', который был config в filesystem.php

'public' => [
    'driver' => 'local',
    'root'   => public_path(),
    'url' => env('APP_URL').'/public',
    'visibility' => 'public',
],

'images/test_image.jpg' - путь изображения.

Ответ 5

Есть две вещи, которые нужно проверить: (1), что путь существует, и (2), что путь является каталогом.

Это проверит наличие пути (синтаксис для Laravel 5.2+), независимо от того, является ли это файлом или каталогом:

Storage::exists('your-path') // bool

Как только вы знаете, что это существует, это подтвердит, что путь - это каталог:

Storage::getMetadata('your-path')['type'] === 'dir' 

Базовая библиотека Flysystem будет кэшировать то, что она может при проверке файловой системы (которая может быть локальной или удаленной), поэтому в обычных обстоятельствах эти две функции будут выполнять только один вызов файловой системы.

Ответ 6

Если вы хотите проверить, существует ли каталог и создать его, если он не существует, этот код будет работать для вас.

if(!Storage::exists('/path/to/your/directory')) {

    Storage::makeDirectory('/path/to/create/your/directory', 0775, true); //creates directory

}

Ответ 7

Вы можете получить все каталоги в виде массива, затем проверить, существует ли каталог (путь).

$dir = 'dir/path';
$existingDirs = Storage::disk(env('FILE_SYSTEM'))->allDirectories();
if (!in_array($dir, $existingDirs)) {
    // dir doesn't exist so create it
}