简化/ 存储
谷歌云存储API(服务账户客户端)
0.0.9
2017-03-18 18:50 UTC
Requires
- php: >=7.1
- google/apiclient: ^2.1
README
_ _ _ ___(_)_ __ ___ _ __ | | ___ _ __ __ _ ___| |_ ___ _ __ __ _ __ _ ___ / __| | '_ ` _ \| '_ \| |/ _ \| '_ \ / _` / __| __/ _ \| '__/ _` |/ _` |/ _ \ \__ \ | | | | | | |_) | | (_) | | | | | (_| \__ \ || (_) | | | (_| | (_| | __/ |___/_|_| |_| |_| .__/|_|\___/|_| |_| \__, |___/\__\___/|_| \__,_|\__, |\___| |_| |___/ |___/
需求
您需要一个作为 JSON
格式的 服务器账户凭证
,您可以在您的 谷歌控制台
中生成。您将收到一个看起来如下示例的文件
{ "type": "service_account", "project_id": "foo.bar:api-project-XXXXXXXXXXXXXX", "private_key_id": "XXXXXXXXXXXXXX", "private_key": "-----BEGIN PRIVATE KEY-----\nXXXXXXXXXXXXXX\n-----END PRIVATE KEY-----\n", "client_email": "cloud-storage-web-server@api-project-XXXXXXXXXXXXXX.foo.bar.iam.gserviceaccount.com", "client_id": "XXXXXXXXXXXXXX", "auth_uri": "https://#/o/oauth2/auth", "token_uri": "https://#/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/cloud-storage-web-server%40api-project-XXXXXXXXXXXXXX.foo.bar.iam.gserviceaccount.com" }
设置凭证
存储需要您的凭证以进行构建。为此,我们需要使用 ServerAccountCredentials
,它提供了两种加载凭证的方法。
从参数加载
使用您上面的JSON文件中的 client_email
和 private_key
进行此方法。
$credentials = (new ServerAccountCredentials())->loadFromParams( "cloud-storage-web-server@api-project-XXXXXXXXXXXXXX.foo.bar.iam.gserviceaccount.com", "-----BEGIN PRIVATE KEY-----\nXXXXXXXXXXXXXX\n-----END PRIVATE KEY-----\n" );
从JSON文件加载
指定您的JSON文件的文件路径。假设我们将文件保存在同一文件夹中,并命名为 credentials.json
。
$credentials = (new ServerAccountCredentials())->loadFromJsonFile('credentials.json');
实例化Gstorage类
现在需要做的所有事情就是使用 $credentials
$gstorage = new Gstorage($credentials);
上传文件
让我们上传一个文件。我们将构建一个上传对象,并返回一个简单的对象。
// upload object $data = new UploadData('YOUR-BUCKET-NAME'); // load file via URL $data->loadWithFile('https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png'); // upload file $objectData = $gstorage->upload($data); // ObjectData|null if ($objectData) { var_dump([ 'bucket' => $objectData->getBucket(), 'id' => $objectData->getFileName(), 'url_public' => $objectData->getUrlPublic(), ]); }
通过BLOB上传
如果您已经有文件数据,可以按照以下方式上传您的数据
// our blob $blob = file_get_contents('https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png'); // upload object $data = new UploadData('YOUR-BUCKET-NAME'); // load file via BLOB $data->loadWithBlob('google-logo.png', $blob); // upload file $objectData = $gstorage->upload($data); // ObjectData|null if ($objectData) { var_dump([ 'bucket' => $objectData->getBucket(), 'id' => $objectData->getFileName(), 'url_public' => $objectData->getUrlPublic(), ]); }
删除文件
让我们从我们的 谷歌Logo Blob
中删除上传
$response = $gstorage->delete( new ObjectData('YOUR-BUCKET-NAME', 'google-logo.png') ); var_dump($response); // true|false
完整示例
$gstorage = new Gstorage( (new ServerAccountCredentials())->loadFromJsonFile('credentials.json') ); // upload object $data = new UploadData('YOUR-BUCKET-NAME'); // load file via URL $data->loadWithFile('https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png'); // upload file $objectData = $gstorage->upload($data); // ObjectData|null if ($objectData) { var_dump([ 'bucket' => $objectData->getBucket(), 'id' => $objectData->getFileName(), 'url_public' => $objectData->getUrlPublic(), ]); }
许可证
Cirrus可以在MIT许可证的条款下自由分发。
版权(c)2016 Tino Ehrich (tino@bigpun.me)
特此授予任何人免费获得本软件及其相关文档文件(以下简称“软件”)副本的许可,以未经限制地处理该软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权力,并允许向软件提供副本的个人执行此类操作,前提是遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、针对特定目的的适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论这些责任是在合同行为、侵权行为或其他行为中产生的,无论是在软件或软件的使用或操作中产生的。