Настройка конфигурации CORS с использованием PHP API Google Cloud Storage не работает - PullRequest
1 голос
/ 26 марта 2019

Я настраиваю конфигурацию CORS корзины Google Cloud Storage, используя PHP API, но, похоже, она не работает

Я прочитал документ, приведенный в: 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']);

После выполнения этого кода конфигурация контейнера CORS не изменилась (мой босс не хочет, чтобы я использовал команду оболочки gsutil для решения этой проблемы)

Ответы [ 2 ]

0 голосов
/ 23 апреля 2019

Ты очень близко!CORS принимает список, поэтому вам просто нужно внести небольшие изменения:

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

Дайте мне знать, если это поможет:).

0 голосов
/ 26 марта 2019

Единственное, что мне нужно было изменить, это когда я настраивал диски в laravel, используя этот код в config / filesystems.php при добавлении диска в Google:

'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);

...