首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用openstack4j获取上传的对象URL

使用openstack4j获取上传的对象URL
EN

Stack Overflow用户
提问于 2016-11-02 16:35:59
回答 1查看 528关注 0票数 2

目前,我正在使用openstack4j将对象放入一个可公开读取的容器中。上传很好(我可以通过拼凑得到对象的URL ),但如果可能的话,我希望能够直接从库中获得上传对象的公共URL。

查看一下我发现的ObjectLocation文档,但这只会给出对象的路径组件,而不是完整的URL。有什么方法可以让我使用openstack4j获取对象的完整URL吗?

我上传文件的代码是:

代码语言:javascript
复制
os.objectStorage.objects.put(containerName, objectName, Payloads.create(someFile))

注意:我实际上是在scala中使用openstack4j,尽管这并不重要。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-07 13:09:20

如果您使用的是OpenStack4j 3.0.X和Openstack Identity API v3,您可以使用以下代码获取对象存储端点url:

代码语言:javascript
复制
for (Service s : os.getToken().getCatalog()) {
            if (s.getName().equals("swift")) {
                for (Endpoint e : s.getEndpoints()) {
                    if (e.getRegion().equals("dallas") && e.getIface().equals(Facing.PUBLIC)) {
                        objectUrl = e.getUrl().toString();
                    }
                }
            }
        }

其中osorg.openstack4j.api.OSClient.OSClientV3的一个实例。您应该寻找在您的凭据中提到的区域(在我的例子中是“达拉斯”)。

一旦您拥有了这个端点的url,就可以使用它为您的对象创建url:

代码语言:javascript
复制
objectUrl + "/" + containerName + "/" + objectName

这将导致(例如,它没有链接到实际对象):

代码语言:javascript
复制
https://dal.objectstorage.open.softlayer.com/v1/AUTH_2440e4fa175452cb2e14506cb5d63ec/MyContainer/uploadedOpbject.jpg
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40385145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档