deva7mad / laravel-azure-storage
Microsoft Azure Blob Storage 对 Laravel 的 Storage API 的集成
Requires
Requires (Dev)
- league/flysystem-cached-adapter: ^1.1
- mockery/mockery: ^1.4
- orchestra/testbench: ^6.4
- php-coveralls/php-coveralls: ^2.4
- phpunit/phpunit: ^9.4
- psy/psysh: ^0.9.12
- squizlabs/php_codesniffer: ^3.5
- vimeo/psalm: ^3.18
Suggests
This package is auto-updated.
Last update: 2024-09-16 22:57:24 UTC
README
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_NAME
、AZURE_STORAGE_KEY
、AZURE_STORAGE_CONTAINER
和 AZURE_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 进行测试,也不会接受添加此支持的任何拉取请求。