嗨,我尝试使用laravel API将图像文件上传到Google云存储。 我已经通过composer集成了google sdk,并且尝试使用邮递员进行攻击,我正在获取url并存储在我的数据库中,但是图像文件未上传到google cloud的文件夹中。我在其中创建了一个名称为“ 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/'),
],
这一切我都做了。我错过了什么吗?是否需要任何其他配置?
答案 0 :(得分:1)
这是因为您正在生成url,但未将其存储在磁盘中的文件中,
这是代码示例
拳头从请求中获取文件内容:
$avatar = $request->file('avatar')
第二保存到存储:
Storage::disk('gcs')->put('avatars/'.$me->uuid , $file);
答案 1 :(得分:-1)
Go to The Project in xampp
[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);
}
[config-> 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步中获得的my-buckets.json路径添加到Key_file
网址-https://cloud.google.com/sdk/
运行:gcloud auth login
然后,它将向浏览器打开一个询问我们创建了Google云存储的gmail帐户的权限,并允许google sdk的访问权限,然后将在控制台中显示我们当前的项目。
运行:gsutil iam ch allUsers:objectViewer gs://my-buckets
希望您可以将文件从项目上传到Cloud Storage 谢谢
**** Harisankar.H ****