я использую Laravel-Google-облако хранения пакет из github в моем проекте Laravel для загрузки файлов в облачное хранилище Google. У меня есть файл JSON с учетными данными, идентификатором проекта и списком корзины в моем .env
файл.
.файл env
GOOGLE_CLOUD_PROJECT_ID='myproject-123456'
GOOGLE_CLOUD_KEY_FILE=/var/www/project/credintials.json
GOOGLE_CLOUD_STORAGE_BUCKET=minisite_event
.учетные данные JSON
{
"type": "service_account",
"project_id": "myproject-123456",
"private_key_id": "MY_PROJECT_KEY_ID",
"private_key": "-----BEGIN PRIVATE KEY-----\nTHEWHOLEKEYHEREWITHVERYVERYLONGTEXTLIKEANYOTHERPRIVATEKEYFILE=\n-----END PRIVATE KEY-----\n",
"client_email": "TEST@PROJECT_ID.iam.gserviceaccount.com",
"client_id": "99112211221122112211",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://accounts.google.com/o/oauth2/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/ATESTSTRING.iam.gserviceaccount.com"}
Конфигурация файловой системы
'gcs' => [
'driver' => 'gcs',
'project_id' => env('GOOGLE_CLOUD_PROJECT_ID', 'your-project-id'),
'key_file' => env('GOOGLE_CLOUD_KEY_FILE', null), // optional: /path/to/service-account.json
'bucket' => env('GOOGLE_CLOUD_STORAGE_BUCKET', 'your-bucket'),
'path_prefix' => env('GOOGLE_CLOUD_STORAGE_PATH_PREFIX', null), // optional: /default/path/to/apply/in/bucket
'storage_api_uri' => env('GOOGLE_CLOUD_STORAGE_API_URI', null), // see: Public URLs below
]
В моем Laravel я пытаюсь поместить файл в файловую систему
$disk = Storage::disk('gcs');
$path = $disk->putFile('event_'.$id, $request->file('qqfile'));
Тогда я получаю эту ошибку:
NotFoundException
{
"error": {
"errors": [
{
"domain": "global",
"reason": "notFound",
"message": "Not Found"}
],
"code": 404,
"message": "Not Found"}
}
Я не уверен, что я делаю неправильно. Также пакет не очень хорошо документирован, и это лучший пакет, который я мог найти, который уже реализовал Файловую систему.
Вот ответ на решение, как я это исправил. Это в основном не технологическая или программная ошибка. Здесь все было правильно, кроме GOOGLE_CLOUD_STORAGE_BUCKET
в .env
файл.
На моем рабочем месте GCP контролируется нашим инженером, который также является нашим ведущим разработчиком. Я попросил его создать папку репозитория хранилища, чтобы я мог загружать изображения через наше приложение и предоставлять мне учетные данные учетной записи службы. Он создал и дал мне имя папки внутри корзины.
Я использовал имя папки вместо имени корзины в
.env
файл. когда
Я показываю ему код, потом он определил, что это было неправильное название ведра.
Я обновил название корзины и все работает нормально.
Мораль:
Если ничего не работает, пожалуйста, проверьте связь со всеми, кто имеет отношение к проблеме.
Других решений пока нет …