我正在使用 Java jclouds API 访问我的 Rackspace 云文件帐户。
我可以创建和列出容器,并上传对象,但我不知道如何获取上传对象的公共链接。(我可以在 Rackspace 控制面板中看到这些公共链接,通过右键单击对象 - 有 4 种类型:HTTP、HTTPS、流式传输、iOS 流式传输)。
我能得到的最接近的是使用 object.getInfo() 来获取对象的元数据。这包括一个 URI,但这与我在控制面板中找到的公共链接不同。
有人知道我在做什么错吗?
我正在使用 Java jclouds API 访问我的 Rackspace 云文件帐户。
我可以创建和列出容器,并上传对象,但我不知道如何获取上传对象的公共链接。(我可以在 Rackspace 控制面板中看到这些公共链接,通过右键单击对象 - 有 4 种类型:HTTP、HTTPS、流式传输、iOS 流式传输)。
我能得到的最接近的是使用 object.getInfo() 来获取对象的元数据。这包括一个 URI,但这与我在控制面板中找到的公共链接不同。
有人知道我在做什么错吗?
我想到了...
首先,我应该获取对象容器的公共 URI,而不是来自对象。
然后我使用CloudFilesClient对象。在我需要使用的容器上getCDNMetadata("containername").getCDNUri()
这是获取特定文件 CDN 地址的更多信息和一些示例代码。有关更多详细信息,您可以查看 Java 指南: https ://developer.rackspace.com/docs/cloud-files/quickstart/?lang=java
首先获取云文件api:
CloudFilesApi cloudFilesApi = ContextBuilder.newBuilder("rackspace-cloudfiles-us")
.credentials("{username}", "{apiKey}")
.buildApi(CloudFilesApi.class);
从那里您可以查询容器:
CDNApi cdnApi = cloudFilesApi.getCDNApi("{region}");
CDNContainer cdnContainer = cdnApi.get("{containerName}");
现在使用该 CDNContainer 您可以获得所需的特定网址:
URI httpURI = cdnContainer.getUri();
URI httpsURI = cdnContainer.getSslUri();
这将为您提供容器的基本 URI。现在要获取特定文件的最终地址,您需要将/{"your_file_name.extension"}附加到地址的末尾。例如,如果我的基本 URI 转换为 URL,然后转换为字符串,它可能如下所示:
http://123456asdf-qwert987653.rackcdn.com/
从这里我可以得到一个名为example.mp4的文件,地址如下:
http://123456asdf-qwert987653.rackcdn.com/example.mp4
这一切都假设您已经在容器上启用了 CDN。