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

d4so4syb  于 2023-08-05  发布在  Scala
关注(0)|答案(1)|浏览(87)

目前我使用openstack4j将对象放入一个公共可读的容器中。上传工作正常(我可以通过拼接来获得对象的URL),但如果可能的话,我希望能够直接从库中获得上传对象的公共URL。
通过查看文档,我发现了ObjectLocation,但它只提供了对象的路径组件,而不是完整的URL。有没有什么方法可以让我使用openstack4j获取对象的完整URL?
我上传文件的代码是:

os.objectStorage.objects.put(containerName, objectName, Payloads.create(someFile))

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

qyswt5oh

qyswt5oh1#

如果你使用的是OpenStack 4j 3.0.X和Openstack Identity API v3,你可以使用下面的代码来获取object-storage(swift)端点url:

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的instance。你应该寻找你的证书中提到的地区(在我的情况下是“达拉斯”)。
一旦你有了这个端点的url,你就可以用它来为你的对象创建URL:

objectUrl + "/" + containerName + "/" + objectName


这将导致(仅作为示例,它不链接到实际对象):

https://dal.objectstorage.open.softlayer.com/v1/AUTH_2440e4fa175452cb2e14506cb5d63ec/MyContainer/uploadedOpbject.jpg

相关问题