@denis-chenykh

Почему не загружаются файлы в google cloud storage?

Laravel 9.

Используется плагин spatie/laravel-google-cloud-storage~2.0 для загрузки на google storage.

Конфиг в filesystems.php (все данные и доступы к json с данными проверены несколько раз):

'gcs' => [
            'driver' => 'gcs',
            'key_file_path' => env('GOOGLE_CLOUD_KEY_FILE', '/var/www/bucket-loader.json'), // optional: /path/to/service-account.json
            'key_file' => [], // optional: Array of data that substitutes the .json file (see below)
            'project_id' => env('GOOGLE_CLOUD_PROJECT_ID', 'your-project-id'), // optional: is included in key file
            'bucket' => env('GOOGLE_CLOUD_STORAGE_BUCKET', 'your-bucket'),
            'path_prefix' => env('GOOGLE_CLOUD_STORAGE_PATH_PREFIX', 'test'), // optional: /default/path/to/apply/in/bucket
            'apiEndpoint' => env('GOOGLE_CLOUD_STORAGE_API_URI', null), // see: Public URLs below
            'visibility' => 'public', // optional: public|private
            'metadata' => ['cacheControl'=> 'public,max-age=86400'], // optional: default metadata
        ],

Код загрузки изображения, идет получения изображения, генерируется изображение, а после загружается на google storage:

$file = $request->file('file');
        $name= uniqid().".".$file->getClientOriginalExtension();

        $disk = Storage::disk('gcs');

        var_dump($disk->put($name, file_get_contents($file)));

После попытки загрузки ответ приходит false, не ошибка авторизации, ничего более, просто false.

Права у сервисного аккаунта который подключен к нужному ведру выставлены вот такие:
Storage Admin
Storage Object Admin
Storage Object Creator
Storage Object Viewer

Не совсем понимаю почему не загружаются файлы.
  • Вопрос задан
  • 82 просмотра
Решения вопроса 1
@denis-chenykh Автор вопроса
Был весьма невнимателен при создании ведра, нужно в разрешении указывать Fine-grained
635142a1d3f5d151926954.png

Так же вы можете включить вывод сообщений при загрузках указав в самом конфиге параметр throw как true

'gcs' => [
            'driver' => 'gcs',
            'key_file_path' => '', // optional: /path/to/service-account.json
            'key_file' => [], // optional: Array of data that substitutes the .json file (see below)
            'project_id' => '', // optional: is included in key file
            'bucket' => '',
            'path_prefix' => '', // optional: /default/path/to/apply/in/bucket
            'apiEndpoint' => 'https://storage.googleapis.com/', // see: Public URLs below
            'visibility' => 'public', // optional: public|private
            'metadata' => ['cacheControl'=> 'public,max-age=86400'], // optional: default metadata
            'throw' => true // 
        ],
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы