Search by

trail / storage

dodgycoffee

Storage driver addon for trail

Package info

source.tube/brindly/trail-storage

Issues

Type:trail-addon

pkg:composer/trail/storage

Statistics

Installs: 2

Dependents: 0

Suggesters: 0

0.4.2 2026-10-18 22:31 UTC

This package is auto-updated.

Last update: 2026-10-19 09:05:00 UTC


README

Storage driver addon for trail. Supports local storage, bunny storage, and s3-compatible platforms

install

composer require trail/storage

config

// trail/config/storage.php
return [
    '*' => [
        'default' => 'images',
        'disks' => [
            'images' => [
                'driver' => 's3',
                'bucket' => Env::get('S3_BUCKET'),
                'accessKey' => Env::get('S3_ACCESS_KEY'),
                'secretKey' => Env::get('S3_SECRET_KEY'),
                'endpoint' => Env::get('S3_ENDPOINT'),
                'region' => Env::get('S3_REGION'),
                'url' => Env::get('S3_PUBLIC_URL'),
                'acl' => 'public-read',
            ],
            'cdn' => [
                'driver' => 'bunny',
                'zone' => Env::get('BUNNY_STORAGE_NAME'),
                'accessKey' => Env::get('BUNNY_ACCESS_KEY'),
                'region' => Env::get('BUNNY_REGION'),
                'url' => Env::get('BUNNY_CDN_URL'),

                // account api key [cdn purges]
                'apiKey' => Env::get('BUNNY_API_KEY'),
            ],
            'uploads' => [
                'driver' => 'local',
                'root' => 'web/uploads',
                'url' => '/uploads',
            ],
        ],
    ],
];

use

use Trail\Storage\Storage;

$disk = Storage::disk('images');
$disk->write('2026/cat.jpg', $upload->stream());
$disk->read('2026/cat.jpg');
$disk->stream('2026/cat.jpg');
$disk->has('2026/cat.jpg');
$disk->size('2026/cat.jpg');
$disk->files('2026');
$disk->folders('2026');
$disk->copy('2026/cat.jpg', 'backup/cat.jpg');
$disk->move('2026/cat.jpg', '2027/cat.jpg');
$disk->delete('2027/cat.jpg');
$disk->url('2026/cat.jpg');

purge

Bunny disks with an apiKey set will autoclear cdn cache

if ($disk instanceof Cdn && $disk->canPurge()) {
    $disk->purge('2026/cat.jpg');
}

custom driver

// in addon's register()
Storage::driver('ftp', static fn (array $options): Disk => new FtpDisk($options));