问题是,在我将对象上传到可公开访问的Google Cloud存储桶后,我想立即将创建的URL用于其他服务。但是,我没有看到获取我可以使用的mediaUrl的方法。以下方法上给我的所有属性都是私有的:
$bucket->upload(
fopen($_FILES['file']['tmp_name'], 'r'),
array('name' => $name)
);
我已经尝试var_dump上述方法,以查看是否有任何公共属性会给我创建的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?
您需要自己为公共对象构建公共链接 URL。
格式很简单https://storage.cloud.google.com/BucketName/ObjectName
.
有两种方法可以实现此目的:
- 使用以下 sintaxis 为公共对象创建 URL:https://storage.googleapis.com/[存储桶名称]/[对象名称]
哪里:
[存储桶名称] = 您的存储桶
[对象名称]= 上传对象的名称
- 如果您使用的是 AppEngine Standard Environment,API PHP App Engine API 中有一个方法:getPublicUrl(string $gs_filename, boolean $use_https( : string
哪里:
$gs_filename, string, Google Cloud Storage 文件名,格式为:gs://bucket_name/object_name。
$use_https, boolean, 如果为 True,则返回一个 HTTPS URL。请注意,开发服务器忽略此参数,仅返回 HTTP URL。
这里是 API 文档。