matthewbdaly/laravel-azure-storage

此包已被弃用且不再维护。作者建议使用azure-oss/storage-blob-laravel包。

Microsoft Azure Blob Storage 集成于 Laravel 的 Storage API

2.0.8 2022-10-17 13:38 UTC

README

此包依赖于 Flysystem 的 Azure Blob Storage 集成。其创建者宣布,由于微软将停止支持其 PHP 存储客户端,他也将从 Flysystem 中删除 Azure 支持,时间定于 2024 年。

因此,我没有继续维护此包的可行途径。此外,我本人从未真正需要使用此包,仅出于惯性而维护它。因此,它自 2024 年 3 月起已过时。

现在有一个维护的替代品可用,位于 https://github.com/Azure-OSS/azure-storage-php-adapter-laravel,应该可以轻松切换。

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

这是一个针对 Laravel 文件存储 API 的自定义驱动程序,该 API 本身建立在 Flysystem 3 之上。它使用 Flysystem 自身的 Azure blob 存储适配器,因此无法轻易添加比现有更多的功能 - 事实上,添加这些功能将超出项目范围。

安装

使用 composer 安装此包

composer require matthewbdaly/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_NAMEAZURE_STORAGE_KEYAZURE_STORAGE_CONTAINERAZURE_STORAGE_URL 添加到您的 .env 文件中,并使用相应的凭据。字段 AZURE_STORAGE_URL 是可选的,这允许您设置一个自定义 URL,以便从 Storage::url() 返回,如果使用 $root 容器,则 URL 将返回而不包含容器路径。可以可选地使用前缀。如果没有设置,则使用容器根目录。然后您可以设置 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 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
            ]
        ],

不支持的功能

由于此包使用 Flysystem 的 Azure 集成,因此它与以下限制相同

  • 不支持设置或检索可见性。
  • 总是解析 Mimetype,而其他不解析。
  • 不支持以任何方式创建目录。

支持策略

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

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

您能添加对存储后端X的支持吗?

不行。这仅限于Azure Blob存储,我明确表示对将其范围扩展到支持其他后端不感兴趣。

只要Flysystem支持它,如果您需要,就可以像在https://laravel.net.cn/docs/9.x/filesystem#custom-filesystems中描述的那样轻松地创建自己的Laravel文件系统驱动程序——这是构建此包的方法。