deva7mad/laravel-azure-storage

Microsoft Azure Blob Storage 对 Laravel 的 Storage API 的集成

1.2.0 2020-11-16 14:12 UTC

This package is auto-updated.

Last update: 2024-09-16 22:57:24 UTC


README

Build Status Coverage Status

Microsoft Azure Blob Storage 对 Laravel 的 Storage API 的集成。

这是 Laravel 文件存储 API 的一个自定义驱动程序,它本身建立在 Flysystem 之上。它使用 Flysystem 自身的 Azure Blob Storage 适配器,因此不能轻易地添加比这更多的功能——实际上,添加这些功能超出了项目的范围。

安装

使用 composer 安装此包

composer require deva7mad/laravel-azure-storage

在 Laravel 5.5 之前的版本中,您还需要手动将服务提供者添加到 config/app.php

    Deva7mad\LaravelAzureStorage\AzureStorageServiceProvider::class,

然后将其添加到 config/filesystems.php 中的 disks 部分

        '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,
        ],

最后,将字段 AZURE_STORAGE_NAMEAZURE_STORAGE_KEYAZURE_STORAGE_CONTAINERAZURE_STORAGE_URL 添加到您的 .env 文件中,并使用相应的凭据。字段 AZURE_STORAGE_URL 是可选的,这允许您设置一个自定义 URL,该 URL 将从 Storage::url() 返回,如果使用 $root 容器,则 URL 将返回而不包含容器路径。可以可选地使用 prefix。如果没有设置,则使用容器根目录。然后您可以将 azure 驱动程序设置为默认或云驱动程序,并像平常一样使用它来获取和检索文件。

有关如何使用此驱动程序的详细信息,请参阅 Laravel 文件存储 API 文档

自定义端点

此包支持使用自定义端点,例如以下示例

        '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'),
        ],

然后您可以在 .env 文件中指定 AZURE_STORAGE_ENDPOINT 的合适值。

SAS 令牌身份验证

使用 SAS 令牌身份验证时,需要端点。值的格式如下:https://[accountName].blob.core.windows.net

        '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'),
        ],

缓存

此包支持基于磁盘的缓存,如 Laravel 文档 中所述。此功能需要添加包 league/flysystem-cached-adapter

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

要启用 azure 磁盘的缓存,请向磁盘的配置选项添加 cache 指令。

        'azure' => [
            'driver'    => 'azure',
            // Other Disk Options...
            'cache'     => [
                'store' => 'memcached',
                'expire' => 600,
                'prefix' => 'filecache',
            ]
        ],

重试

Azure Storage SDK 提供了一个 用于重试失败请求的中介。要启用重试中介,请向磁盘的配置选项添加 retry 指令。

        '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
            ]
        ],

支持策略

此包支持当前 Laravel LTS 版本以及任何后续版本。如果您正在使用较旧的 Laravel 版本,它可能可以工作,但我提供不了任何保证,也不会接受添加此支持的拉取请求。

作为扩展,由于当前 Laravel LTS 版本需要 PHP 7.0 或更高版本,我不会针对 PHP < 7 进行测试,也不会接受添加此支持的任何拉取请求。