Storage driver addon for trail
- PHP 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| src | ||
| .editorconfig | ||
| .gitignore | ||
| composer.json | ||
| LICENSE | ||
| README.md | ||
trail-storage
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));