使用 Laravel 将图像文件上传到 google 云

Uploading image file to google cloud using Laravel

您好,我正在尝试使用 laravel API 将图像文件上传到 google 云存储。 我已经通过 composer 集成了 google sdk,我尝试与邮递员打交道,我得到了 url 并存储在我的数据库中,但是图像文件没有上传到 google 云中的文件夹中.i 在 bucket 中创建了一个名为 'avatars' 的文件夹。 这是我的代码。 这是我的控制器

public function updateAvatar (AvatarUploadRequest $request) {
    $me = Auth::user();
    $disk = Storage::disk('gcs');
    $url = $disk->url('avatars'. "/" . $me->uuid . ".jpg");
    $me->avatar = $url;
    $me->save();
    return $this->prepareItem($me);
}

这是我的 filesystems.php 文件

'gcs' => [
     'driver' => 'gcs',
     'project_id' => env('GOOGLE_CLOUD_PROJECT_ID', 'my-project-id'),
     'key_file' => env('GOOGLE_CLOUD_KEY_FILE', null),
     'bucket' => env('GOOGLE_CLOUD_STORAGE_BUCKET', 'my-bucket-name'),
     'path_prefix' => env('GOOGLE_CLOUD_STORAGE_PATH_PREFIX', null),
     'storage_api_uri' => env('GOOGLE_CLOUD_STORAGE_API_URI',
     'https://console.cloud.google.com/storage/browser/my-project-id/'),
],

这都是我做的。我错过了什么吗?需要任何其他配置吗?

这是因为您正在生成url但没有存储在磁盘中的文件中, 这是代码示例 首先从请求中获取文件内容: $avatar = $request->file('avatar') 第二个将其保存到存储中: Storage::disk('gcs')->put('avatars/'.$me->uuid , $file);

步骤 1:First 在 google 云存储中创建一个帐户 为此,您将需要信用卡详细信息,但不会收费,因为我们不打算 "Upgrade" 因为这就是确定不是Robot.

步骤2:Create google 云存储中的一个项目,例如项目名称是"My-project"。

第 3 步:在项目中创建存储桶 "My-project"。例如,我在这里创建了 "My-buckets"

第 4 步:在存储桶中创建一个文件夹 例如,我在这里创建了一个文件夹名称 "avatars"。

##第 5 步:转到选项 IAM & Admin => 服务帐户 => 创建服务帐户 => 将服务帐户名称放在存储桶名称中 "my-buckets".=> 检查提供一个新的私有键并保存,然后将下载一个新的 json 文件并将该文件放入 project.Here 我将其重命名为 my-buckets.json.

                      Go to The Project in xampp

第 6 步:转到 userController.php

[app->http->controllers->api->v2->userController.php]

 $me = Auth::user();
 $file = $request->file('avatar');
 $name= $me->uuid . ".".$file->getClientOriginalExtension();
 $filePath = 'avatars/' . $name;
 $disk = Storage::disk('gcs')->put($filePath, file_get_contents($file));
 $gcs = Storage::disk('gcs');
 $url = $gcs->url('avatars'. "/" . $me->uuid . ".jpg");
 $me->avatar = $url;
 $me->save();
return $this->prepareItem($me);

}

第 7 步:转到 filesystems.php

[配置->filesystems.php] 为 google 云

设置驱动程序
'gcs' => [
         'driver' => 'gcs',
         'project_id' => env('GOOGLE_CLOUD_PROJECT_ID', 'my-project-209405'),
         'key_file' => env('GOOGLE_APPLICATION_CREDENTIALS', './my-buckets.json'), // optional: /path/to/service-account.json
         'bucket' => env('GOOGLE_CLOUD_STORAGE_BUCKET', 'my-buckets'),
         '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', 'https://storage.googleapis.com/my-buckets/'), // see: Public URLs below

],

将我们在第 5 步得到的我的-buckets.json 的路径添加到 Key_file

第 8 步:下载 Google SDK 控制台

Url - https://cloud.google.com/sdk/

第 9 步:首先,我们没有创建 google 云的帐户的访问权限,要获得访问权限,我们需要 运行 google [=74] 中的云命令=] SDK控制台

运行 : gcloud auth login 然后它会打开bruser a询问我们创建google云存储的gmail帐户并允许google sdk访问权限,然后它会在控制台中显示我们当前的项目.

第 10 步:运行 启用对象 public 可访问性的命令。我们获取并存储在数据库中的 URL 没有 publicly 访问权限

运行 : gsutil iam ch allUsers:objectViewer gs://my-buckets

希望您可以将您的文件从项目上传到云存储 谢谢

****Harisankar.H****