我正在使用Java jclouds API访问我的Rackspace云文件帐户。
我可以创建和列出容器,并上传对象,但我无法弄清楚如何获取上传对象的公共链接。 (我可以在Rackspace控制面板中看到这些公共链接,通过右键单击对象 - 有4种类型:HTTP,HTTPS,Streaming,iOS Streaming)。
我能得到的最接近的是使用object.getInfo()来获取对象的元数据。这包括一个URI,但这与我在控制面板中找到的公共链接不同。
任何人都知道我做错了什么?
答案 0 :(得分:1)
我明白了......
首先,我应该获取对象容器的公共URI,而不是来自对象。
然后我使用 CloudFilesClient 对象。在容器上我需要使用getCDNMetadata("containername").getCDNUri()
答案 1 :(得分:0)
以下是获取特定文件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然后转换为String,它可能看起来像:
http://123456asdf-qwert987653.rackcdn.com/
从这里我可以获得一个名为 example.mp4 的文件,其中包含以下地址:
http://123456asdf-qwert987653.rackcdn.com/example.mp4
这一切都假设您已经在容器上启用了CDN。