Хранилище Laravel :: Файлы не находят мои файлы

Я хотел подсчитать, сколько изображений находится в каталоге хранилища, но кажется, что Storage::Files не находит ни одного из них, я сохранил 4 изображения в storage\app/public\property\*id_of_the_property*, и я уже выполнил php artisan storage:link, и ссылка работает отлично, по крайней мере, на первый взгляд .

Вот мой config\FilesSystems.php

'disks' => [

        'local' => [
            'driver' => 'local',
            'root' => storage_path('app'),
        ],

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

        's3' => [
            'driver' => 's3',
            'key' => env('AWS_ACCESS_KEY_ID'),
            'secret' => env('AWS_SECRET_ACCESS_KEY'),
            'region' => env('AWS_DEFAULT_REGION'),
            'bucket' => env('AWS_BUCKET'),
            'url' => env('AWS_URL'),
        ],

    ],

И мой контроллер:

public function show($id)
    {

        $show = [];    
        $directory = 'property/'.$id;
        $files = Storage::Files($directory);
        $count = count($files);

        $show['count'] = $count;
        $show['directory'] = $directory;

        return $show;
    }

Но переменная $show['count'] отображает 0, когда должно быть 4, а Storage::Files ничего не делает, так как $show['directory'] показывает «свойство / 1», а 1 - это идентификатор, с которым я тестирую. Что мне не хватает?

я пробовал использовать:

$directory = Storage::url('property/'.$id);
/* Result "/storage/property/1" */
$directory = Storage::url('app/public/property/'.$id);
/* Result "/storage/app/public/property/1" */

или

$directory = Storage_path('property\\'.$id);
/* Result "D:\\xampp\\htdocs\\www\\APP\\storage\\property\\1" */
$directory = Storage_path('app/public/property/'.$id);
/* Result "D:\\xampp\\htdocs\\www\\APP\\storage\\app\/public\\property\\1" */

но тоже безуспешно, счет по-прежнему равен 0.

Спасибо вам за помощь.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
1 575
2

Ответы 2

вы можете использовать файловый фасад

use Illuminate\Support\Facades\File;
...
$images = File::allFiles(storage_path('app/public/property')); // this is recursive

или

$images = File::files(storage_path('app/public/property/'.$id)); // this is NOT recursive

Уже пробовал безуспешно. на самом деле он делает эту ошибку: «preg_match () ожидает, что параметр 2 будет строкой, заданным массивом»

Evilbleezard 19.11.2018 16:54

Используйте public_path ($ directory); для этого

Пробовал и не работает; счетчик все еще на 0

Evilbleezard 21.11.2018 08:59

Другие вопросы по теме