eaguad1337 / laravel-azure-storage
Laravel的Storage API的Microsoft Azure Blob Storage集成
Requires
Requires (Dev)
- infection/infection: ^0.26.15
- mockery/mockery: ^1.4
- orchestra/testbench: ^7.0
- pestphp/pest: ^1.22
- pestphp/pest-plugin-laravel: ^1.3
- php-coveralls/php-coveralls: ^2.1
- phpcompatibility/php-compatibility: ^9.3
- phpunit/phpunit: ^9.3
- psy/psysh: ^0.11
- slevomat/coding-standard: ^7.2
- squizlabs/php_codesniffer: ^3.6
- vimeo/psalm: ^4.19
This package is not auto-updated.
Last update: 2024-10-03 03:14:22 UTC
README
此包依赖于Flysystem的Azure Blob Storage集成。该包的创建者已宣布,由于微软将停止支持其PHP存储客户端,他也将从Flysystem中移除Azure支持,时间为2024年。
因此,我没有继续维护此包的可行途径。此外,我本人从未真正需要使用此包,只是出于惰性而维护它。因此,从2024年3月起,它已被弃用。
有一个项目用于维护原始微软PHP SDK的分支。虽然这并不是此包的直接替代品,因为它目前不提供Flysystem驱动或在此之上的抽象的替代品,但如果您计划继续使用Laravel与Azure一起使用,那么这可能是一个很好的起点。
Laravel的Storage API的Microsoft Azure Blob Storage集成。
这是一个针对Laravel的文件存储API的自定义驱动程序,该API本身建立在Flysystem 3之上。它使用Flysystem的Azure Blob存储适配器,因此无法添加比这更多的功能——实际上,添加这些功能超出了项目范围。
安装
使用composer安装此包
composer require Collapsar/laravel-azure-storage
然后将其添加到config/filesystems.php
文件中的disks
部分
'azure' => [ // NB This need not be set to "azure", because it's just the name of the connection - feel free to call it what you want, or even set up multiple blobs with different names 'driver' => 'azure', // As this is the name of the driver, this MUST be set to "azure" 'name' => env('AZURE_STORAGE_NAME'), 'key' => env('AZURE_STORAGE_KEY'), 'container' => env('AZURE_STORAGE_CONTAINER'), 'url' => env('AZURE_STORAGE_URL'), 'prefix' => null, 'connection_string' => env('AZURE_STORAGE_CONNECTION_STRING') // optional, will override default endpoint builder ],
最后,将AZURE_STORAGE_NAME
、AZURE_STORAGE_KEY
、AZURE_STORAGE_CONTAINER
和AZURE_STORAGE_URL
字段添加到您的.env
文件中,并使用适当的凭据。AZURE_STORAGE_URL
字段是可选的,这允许您通过Storage::url()
设置一个自定义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, 'connection_string' => 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'), ],
重试
Azure存储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 ] ],
不支持的功能
由于此包使用Flysystem Azure集成,因此它具有以下限制
- 不支持设置或获取可见性。
- 总是解析Mimetypes,而其他不解析。
- 不支持以任何方式创建目录。
支持策略
此包支持当前Laravel LTS版本,以及任何后续版本。如果您正在使用较旧的Laravel版本,它可能仍然可以工作,但我无法提供任何保证,也不会接受添加此支持的拉取请求。
通过扩展,由于当前的Laravel LTS版本需要PHP 7.0或更高版本,我不会在低于PHP 7的版本上进行测试,也不会接受任何添加此支持的pull请求。
您能否添加对存储后端X的支持?
不行。这仅限于Azure Blob存储,我明确表示不感兴趣将其范围扩展以支持其他后端。
只要Flysystem支持它,如果您需要,您就可以轻松地根据[https://laravel.net.cn/docs/9.x/filesystem#custom-filesystems](https://laravel.net.cn/docs/9.x/filesystem#custom-filesystems)中描述的方法创建自己的Laravel文件系统驱动程序——这就是我构建此包的方法。