1、安装扩展包:composer require superbalist/laravel-google-cloud-storage
2、从google云平台下载keyfile:service-account.json ,放到本地磁盘(项目某个路径下)
3、google 云平台创建一个存储分区
4、从网上下载一个SSL CA证书 cacert.pem,配置php.ini
[curl]
curl.cainfo=xxx/cacert.pem
5、config/filesystems.php 中配置gcs 存储:
'gcs' => [
'driver' => 'gcs',
'project_id' => env('GOOGLE_CLOUD_PROJECT_ID', 'yourProjectId'),
'key_file' => env('GOOGLE_CLOUD_KEY_FILE', '../gcloud/service-account.json'),
'bucket' => env('GOOGLE_CLOUD_STORAGE_BUCKET', 'yourBucket'),
'path_prefix' => env('GOOGLE_CLOUD_STORAGE_PATH_PREFIX', null),
'storage_api_uri' => env('GOOGLE_CLOUD_STORAGE_API_URI', 'https://storage.googleapis.com'),
'visibility' => 'public', // optional: public|private
],
6、使用:
public function upload(Request $request){
if(!$request->hasFile('source')){
return null;
}
$folder = date('Y-m-d');
$files = array();
foreach($request->file('source') as $file) {
if ($file->isValid()) {
//获取文件的扩展名
$ext = $file->getClientOriginalExtension();
//定义文件名, randomString :自定义的随机字符串生成函数
$filename = $folder.'/'.Util::randomString(10).'.'.$ext;
$disk = Storage::disk('gcs');
$disk->put($filename, file_get_contents($file));
$url = $disk->url($filename);
$files[] = $url;
}
}
return $files;
}
7、测试: