【问题标题】:Laravel laravel-google-cloud-storage NotFoundExceptionLaravel laravel-google-cloud-storage NotFoundException
【发布时间】:2018-03-21 03:02:01
【问题描述】:

我在我的 Laravel 项目中使用来自 github 的 laravel-google-cloud-storage 包将文件上传到谷歌云存储。我的 .env 文件中有一个 JSON 文件,其中包含凭据、项目 ID 和存储桶列表。

.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"
    }
}

我不确定我做错了什么。此外,该软件包没有很好的文档记录,这是我能找到的已实现文件系统的最佳软件包。

【问题讨论】:

  • 您是否创建了存储桶?
  • 您是否在存储桶级别设置了权限 [cloud.google.com/storage/docs/cloud-console#_bucketpermission],以便用户可以在您的存储桶中创建或查看对象?如果是这样,您可以分享您为存储桶设置的权限吗?
  • @GonçaloAlbino 实际上我的存储桶名称是错误的 :( 我将存储桶内的文件夹名称误解为存储桶名称。
  • @ArifulHaque 我可以请您发布解决方案作为答案吗?

标签: php laravel google-cloud-platform google-cloud-storage laravel-filesystem


【解决方案1】:

这是解决方案的答案,我是如何解决的。这基本上不是技术或编程错误。除了.env 文件中的GOOGLE_CLOUD_STORAGE_BUCKET 之外,这里的一切都是正确的。

在我的工作场所,GCP 由我们的工程主管控制,他也是我们的主管 DevOp。我让他为我创建一个存储库文件夹,以便我通过我们的应用程序上传图像并给我服务帐户凭据。他创建并给了我存储桶内的文件夹名称。

我在.env 文件中使用了文件夹名称而不是存储桶名称。什么时候 我向他展示了代码,然后他确定这是错误的存储桶名称。 我已经更新了存储桶名称,一切正常。

道德:

如果没有任何效果,请检查与该问题相关的所有人的沟通。

【讨论】:

  • 还是有帮助的,我会检查错别字
猜你喜欢
  • 2020-02-16
  • 2019-12-02
  • 2017-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-06
  • 1970-01-01
相关资源
最近更新 更多