在 Rackspace 云文件 API 中获取对象的链接
Posted
技术标签:
【中文标题】在 Rackspace 云文件 API 中获取对象的链接【英文标题】:Getting an object's links in Rackspace cloud files API 【发布时间】:2013-06-20 07:58:22 【问题描述】:我正在使用 Java jclouds API 访问我的 Rackspace 云文件帐户。
我可以创建和列出容器以及上传对象,但我不知道如何获取已上传对象的公共链接。 (我可以在 Rackspace 控制面板中看到这些公共链接,通过右键单击对象 - 有 4 种类型:HTTP、HTTPS、流式传输、ios 流式传输)。
我能得到的最接近的方法是使用 object.getInfo() 来获取对象的元数据。这包括一个 URI,但这与我在控制面板中找到的公共链接不同。
有人知道我做错了什么吗?
【问题讨论】:
【参考方案1】:我想通了……
首先,我应该获取对象容器的公共 URI,而不是从对象中获取。
然后我使用 CloudFilesClient 对象。在容器上我需要使用getCDNMetadata("containername").getCDNUri()
【讨论】:
【参考方案2】:这里有更多信息和一些获取特定文件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。
【讨论】:
以上是关于在 Rackspace 云文件 API 中获取对象的链接的主要内容,如果未能解决你的问题,请参考以下文章
播放 Rackspace 云文件中的视频时 Chrome 冻结
使用 Jclouds 上传时,Rackspace 云文件将“应用程序/未知”作为 mime 类型返回