上传PHP后从Google Cloud获取可公开访问的URL

时间:2019-07-22 18:57:29

标签: php google-cloud-platform google-cloud-storage google-cloud-sdk

问题是当我将对象上传到可公开访问的Google Cloud存储桶后,我想立即将创建的URL用于其他服务。但是,我没有找到一种可以使用的mediaUrl的方法。以下方法的所有属性将为我提供私人信息:

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

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

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

$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?

2 个答案:

答案 0 :(得分:2)

您需要为公共对象自己构建公共链接URL。

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

答案 1 :(得分:1)

您可以通过两种方式实现这一目标:

  1. 使用以下代码为公共对象创建URL:https://storage.googleapis.com/[BucketName]/[ObjectName]

位置:

[BucketName] =您的存储桶

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

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

位置:

$ gs_filename,字符串,Google Cloud Storage文件名,格式为:gs:// bucket_name / object_name。

$ use_https,布尔值,如果为True,则返回HTTPS URL。请注意,开发服务器会忽略此参数,仅返回HTTP URL。

API documentation