Filesystem / Cloud Storage

Introduction

Lumen provides a wonderful filesystem abstraction thanks to the Flysystem PHP package by Frank de Jonge. The Flysystem integration provides simple to use drivers for working with local filesystems, Amazon S3, and Rackspace Cloud Storage. Even better, it's amazingly simple to switch between these storage options as the API remains the same for each system!

Configuration

The filesystem configuration options are located in your .env configuration file. You may look at the .env.example configuration file for an example of using these options.

Before using the S3 or Rackspace drivers, you will need to install the appropriate package via Composer:

When using the local driver, note that all file operations are relative to the storage/app directory. Therefore, the following method would store a file in storage/app/file.txt:

Storage::disk('local')->put('file.txt', 'Contents');

Basic Usage

Note: If you intend to use the Storage facade, be sure to uncomment the $app->withFacades() call in your bootstrap/app.php file.

The Storage facade may be used to interact with any of your configured disks. Alternatively, you may type-hint the Illuminate\Contracts\Filesystem\Factory contract on any class that is resolved via the Laravel service container.

Retrieving A Particular Disk

$disk = Storage::disk('s3');

$disk = Storage::disk('local');

Determining If A File Exists

$exists = Storage::disk('s3')->exists('file.jpg');

Calling Methods On The Default Disk

if (Storage::exists('file.jpg')) {
	//
}

Retrieving A File's Contents

$contents = Storage::get('file.jpg');

Setting A File's Contents

Storage::put('file.jpg', $contents);

Prepend To A File

Storage::prepend('file.log', 'Prepended Text');

Append To A File

Storage::append('file.log', 'Appended Text');

Delete A File

Storage::delete('file.jpg');

Storage::delete(['file1.jpg', 'file2.jpg']);

Copy A File To A New Location

Storage::copy('old/file1.jpg', 'new/file1.jpg');

Move A File To A New Location

Storage::move('old/file1.jpg', 'new/file1.jpg');

Get File Size

$size = Storage::size('file1.jpg');

Get The Last Modification Time (UNIX)

$time = Storage::lastModified('file1.jpg');

Get All Files Within A Directory

$files = Storage::files($directory);

// Recursive...
$files = Storage::allFiles($directory);

Get All Directories Within A Directory

$directories = Storage::directories($directory);

// Recursive...
$directories = Storage::allDirectories($directory);

Create A Directory

Storage::makeDirectory($directory);

Delete A Directory

Storage::deleteDirectory($directory);