使用 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 存储分区