简化/存储

谷歌云存储API(服务账户客户端)

0.0.9 2017-03-18 18:50 UTC

This package is auto-updated.

Last update: 2024-09-21 00:19:23 UTC


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_emailprivate_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)

特此授予任何人免费获得本软件及其相关文档文件(以下简称“软件”)副本的许可,以未经限制地处理该软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权力,并允许向软件提供副本的个人执行此类操作,前提是遵守以下条件

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、针对特定目的的适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论这些责任是在合同行为、侵权行为或其他行为中产生的,无论是在软件或软件的使用或操作中产生的。