使用 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****
您好,我正在尝试使用 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****