上传后从 Google 云端公开访问 URL PHP

Get publicly accessible URL from Google Cloud after upload PHP

问题是在我将对象上传到我的 public 可访问 Google 云存储桶后,我想立即将创建的 URL 用于其他服务。但是,我没有找到一种方法来获取我可以使用的 mediaUrl。以下方法的所有属性都是私有的:

$bucket->upload(
    fopen($_FILES['file']['tmp_name'], 'r'),
    array('name' => $name)
);

我已经尝试 var_dump-ing 上面的方法来查看是否有任何 public 属性会给我创建的 URL,但它甚至没有任何 public属性。

这是我用来上传数据的代码:

$storage = new StorageClient([
    'keyFilePath' => 'keyfile_json.json'
]);
$bucket = $storage->bucket('bucket');

$name = 'some/name/path/'.$_POST['name'];

    $bucket->upload(
        fopen($_FILES['file']['tmp_name'], 'r'),
        array('name' => $name)
);

文件正在上传,我无法获取实际资源的 URL,然后我可以在对不同服务的不同 API 调用中使用。

如何获取资源上传后的URL?

您需要为 public 个对象构建 public Link URL。

格式简单https://storage.cloud.google.com/BucketName/ObjectName

您有两种方法可以实现:

  1. 使用以下语法为 public 对象创建 URL:https://storage.googleapis.com/[BucketName]/[ObjectName]

其中:

[BucketName] = 你的桶

[ObjectName]=您上传的对象的名称

  1. 如果您使用的是 AppEngine 标准环境,API PHP App Engine API 中有一个方法:getPublicUrl(string $gs_filename, boolean $use_https) : 字符串

其中:

$gs_filename,字符串,Google 云存储文件名,格式为:gs://bucket_name/object_name.

$use_https,布尔值,如果为真则 return HTTPS URL。请注意,开发服务器忽略此参数并且 returns 仅 HTTP URLs.

这里是API documentation.