使用 Google Cloud Storage PHP API 设置 CORS 配置不起作用

Posted

技术标签:

【中文标题】使用 Google Cloud Storage PHP API 设置 CORS 配置不起作用【英文标题】:Set the CORS configuration using Google Cloud Storage PHP API not working 【发布时间】:2019-08-16 09:55:42 【问题描述】:

我正在使用 php API 设置 Google Cloud Storage 存储桶 CORS 配置,但它似乎不起作用

我阅读了https://googleapis.github.io/google-cloud-php/#/docs/google-cloud/v0.96.0/storage/bucket中给出的文件

这是我的 Laravel 源代码:

    use Google\Cloud\Core\ServiceBuilder;

    ...

    $projectId = 'myProjectId';
    $bucketName = 'myBucketName';

    $gcloud = new ServiceBuilder([
        'keyFilePath' => 'resources/google-credentials.json',
        'projectId' => $projectId
    ]);

    $storage = $gcloud->storage();
    $bucket = $storage->bucket($bucketName);

    //change bucket configuration
    $result = $bucket->update([
        'cors' => [
            'maxAgeSeconds' => 3600,
            'method' => [
                "GET","HEAD"
            ],
            "origin" => [
                "*"
            ],
            "responseHeader" => [
                "Content-Type"
            ]
        ]
    ]);

    //print nothing and bucket doesn't changed
    dd($bucket->info()['cors']);

执行此代码后,bucket CORS 配置没有改变 (我的老板不希望我使用 gsutil shell 命令来处理这个)

【问题讨论】:

【参考方案1】:

你非常接近! CORS 接受列表,因此您只需稍作修改:

$result = $bucket->update([
    'cors' => [
        [
            'maxAgeSeconds' => 3600,
            'method' => [
                "GET","HEAD"
            ],
            "origin" => [
                "*"
            ],
            "responseHeader" => [
                "Content-Type"
            ]
        ]   
    ]
]);

如果有帮助,请告诉我:)。

【讨论】:

【参考方案2】:

我唯一需要更改的是当我在 laravel 中配置磁盘时,在为 google 添加磁盘时使用 config/filesystems.php 中的此代码:

'google' => [
    'driver' => 's3',
     'key' => 'xxx',
     'secret' => 'xxx',
     'bucket' => 'qrnotesfiles',
     'base_url'=>'https://storage.googleapis.com'
]

这是从请求中获取文件内容的代码示例:

$file = $request->file('avatar')

第二次保存到存储中:

Storage::disk('google')->put('avatars/' , $file);

【讨论】:

嗨 Bhavin Solanki 我正在使用github.com/Superbalist/laravel-google-cloud-storage 包它的配置似乎不一样 @TerryDevelop 你不需要为谷歌云存储使用任何包 @TerryDevelop 你用的是哪个版本的 laravel? 我的 laravel 是 v5.7.28

以上是关于使用 Google Cloud Storage PHP API 设置 CORS 配置不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Google Cloud Storage - 使用 CURL 请求下载文件

使用 Google App Engine 签名的 Google Cloud Storage 网址

使用 Python 列出 Google Cloud Storage 存储分区

google cloud storage托管静态页面

使用 Google Endpoints 在 Google Cloud Storage 上上传图片

google cloud storage products