Need help with laravel-azure-storage?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

matthewbdaly
135 Stars 20 Forks MIT License 87 Commits 1 Opened issues

Description

Microsoft Azure Blob Storage integration for Laravel's Storage API

Services available

!
?

Need anything else?

Contributors list

# 269,173
HTML
JavaScr...
Redux
materia...
50 commits
# 478,051
PHP
JavaScr...
Laravel
Azure
3 commits
# 512,134
Laravel
PHP
Azure
azure-s...
2 commits
# 39,095
PHP
dropbox
CSS
Laravel
1 commit
# 329,674
JavaScr...
HTML
Laravel
laravel...
1 commit

laravel-azure-storage

Build Status Coverage Status

Microsoft Azure Blob Storage integration for Laravel's Storage API.

This is a custom driver for Laravel's File Storage API, which is itself built on top of Flysystem. It uses Flysystem's own Azure blob storage adapter, and so can't easily add any more functionality than that has - indeed, adding that would be out of scope for the project.

Installation

Install the package using composer:

composer require matthewbdaly/laravel-azure-storage

On Laravel versions before 5.5 you also need to add the service provider to

config/app.php
manually:
    Matthewbdaly\LaravelAzureStorage\AzureStorageServiceProvider::class,

Then add this to the

disks
section of
config/filesystems.php
:
        'azure' => [
            'driver'    => 'azure',
            'name'      => env('AZURE_STORAGE_NAME'),
            'key'       => env('AZURE_STORAGE_KEY'),
            'container' => env('AZURE_STORAGE_CONTAINER'),
            'url'       => env('AZURE_STORAGE_URL'),
            'prefix'    => null,
        ],

Finally, add the fields

AZURE_STORAGE_NAME
,
AZURE_STORAGE_KEY
,
AZURE_STORAGE_CONTAINER
and
AZURE_STORAGE_URL
to your
.env
file with the appropriate credentials. The
AZURE_STORAGE_URL
field is optional, this allows you to set a custom URL to be returned from
Storage::url()
, if using the
$root
container the URL will be returned without the container path. A
prefix
can be optionally used. If it's not set, the container root is used. Then you can set the
azure
driver as either your default or cloud driver and use it to fetch and retrieve files as usual.

For details on how to use this driver, refer to the Laravel documentation on the file storage API.

Custom endpoints

The package supports using a custom endpoint, as in this example:

        'azure' => [
            'driver'    => 'azure',
            'name'      => env('AZURE_STORAGE_NAME'),
            'key'       => env('AZURE_STORAGE_KEY'),
            'container' => env('AZURE_STORAGE_CONTAINER'),
            'url'       => env('AZURE_STORAGE_URL'),
            'prefix'    => null,
            'endpoint'  => env('AZURE_STORAGE_ENDPOINT'),
        ],

Then you can specify a suitable value for

AZURE_STORAGE_ENDPOINT
in your
.env
file as normal.

SAS token authentication

With SAS token authentication the endpoint is required. The value has the following format:

https://[accountName].blob.core.windows.net
php
        'azure' => [
            'driver'    => 'azure',
            'sasToken'  => env('AZURE_STORAGE_SAS_TOKEN'),
            'container' => env('AZURE_STORAGE_CONTAINER'),
            'url'       => env('AZURE_STORAGE_URL'),
            'prefix'    => null,
            'endpoint'  => env('AZURE_STORAGE_ENDPOINT'),
        ],

Caching

The package supports disk based caching as described in the Laravel documentation. This feature requires adding the package

league/flysystem-cached-adapter
:
bash
composer require league/flysystem-cached-adapter:^1.1

To enable caching for the azure disk, add a

cache
directive to the disk's configuration options.
php
        'azure' => [
            'driver'    => 'azure',
            // Other Disk Options...
            'cache'     => [
                'store' => 'memcached',
                'expire' => 600,
                'prefix' => 'filecache',
            ]
        ],

Retries

The Azure Storage SDK ships a middleware to retry failed requests. To enable the retry middewalre, add a

retry
directive to the disk's configuration options.
php
        'azure' => [
            'driver'    => 'azure',
            // Other Disk Options...
            'retry'     => [
                'tries' => 3,                   // number of retries, default: 3
                'interval' => 500,              // wait interval in ms, default: 1000ms
                'increase' => 'exponential'     // how to increase the wait interval, options: linear, exponential, default: linear
            ]
        ],

Support policy

This package is supported on the current Laravel LTS version, and any later versions. If you are using an older Laravel version, it may work, but I offer no guarantees, nor will I accept pull requests to add this support.

By extension, as the current Laravel LTS version required PHP 7.0 or greater, I don't test it against PHP < 7, nor will I accept any pull requests to add this support.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.