返回

Google Cloud Storage 对象内容和元数据一次性获取

php

一次性获取 Google Cloud Storage 对象内容和元数据

简介

在 Google Cloud Storage 中处理对象时,经常需要获取其内容和元数据。通常情况下,这需要进行两次单独的读取操作。本文将介绍如何使用对象下载链接通过一次读取同时获取对象内容和元数据。

传统方法

传统上,获取对象内容和元数据的方法是:

  1. 使用 info() 方法获取对象元数据:

    $meta_data_array = $storage->bucket('bucket_name')->object('objectname.html')->info()['metadata'];
    
  2. 使用 file_get_contents() 方法获取对象内容:

    $contents = file_get_contents('gs://bucket_name/objectname.html');
    

使用对象下载链接

使用对象下载链接,我们可以通过一次读取同时获取对象内容和元数据。对象下载链接是一个临时链接,允许我们下载对象而不使用文件系统。

生成对象下载链接

要生成对象下载链接,我们可以使用 signedUrl() 方法:

$downloadUrl = $object->signedUrl(new \DateTime('10 minutes'));

其中,$object 是一个 Google Cloud Storage 对象,new \DateTime('10 minutes') 设置下载链接的有效期为 10 分钟。

获取对象内容和元数据

有了对象下载链接,我们可以使用 file_get_contents() 方法获取对象内容:

$contents = file_get_contents($downloadUrl);

此时,对象内容将存储在 $contents 中。同时,我们可以直接使用 $object 访问对象元数据,无需再次进行读取操作:

$meta_data_array = $object->info()['metadata'];

代码示例

将上述步骤组合在一起,完整的代码示例如下:

$object = $storage->bucket('bucket_name')->object('objectname.html');
$downloadUrl = $object->signedUrl(new \DateTime('10 minutes'));
$contents = file_get_contents($downloadUrl);
$meta_data_array = $object->info()['metadata'];

注意

需要注意的是,对象下载链接在创建后 10 分钟内有效。我们可以使用 $options 参数自定义到期时间。有关详细信息,请参阅 生成 V4 已签名 URL 文档。

结论

使用对象下载链接,我们可以在一次读取中获取对象内容和元数据。这简化了处理 Google Cloud Storage 对象的过程,节省了时间和资源。

常见问题解答

1. 对象下载链接的有效期是多久?

默认情况下,对象下载链接在创建后 10 分钟内有效。我们可以使用 $options 参数自定义到期时间。

2. 对象下载链接是否对每个人都可用?

对象下载链接可以通过已签名 URL 访问,只有拥有链接的人才能使用。

3. 对象下载链接是否安全?

对象下载链接是安全的,因为它使用 V4 已签名 URL 进行身份验证。

4. 如何取消对象下载链接?

无法取消对象下载链接。如果需要禁用链接,我们可以使用 访问控制列表 (ACL) 来撤销对对象的访问权限。

5. 我可以一次获取多个对象的内容和元数据吗?

无法使用对象下载链接一次获取多个对象的内容和元数据。