gpt4 book ai didi

java - 使用 openstack4j 获取上传的对象 URL

转载 作者:行者123 更新时间:2023-11-30 10:36:56 26 4
gpt4 key购买 nike

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

通过查看文档,我找到了 ObjectLocation,但它只提供了对象的路径部分,而不是完整的 URL。我有什么方法可以使用 openstack4j 获取对象的完整 URL?

我上传文件的代码是:

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

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

最佳答案

如果您使用的是 OpenStack4j 3.0.X 和 Openstack Identity API v3,则可以使用此代码获取对象存储 (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 的实例。您应该查找您的凭据中提到的区域(在我的例子中是“dallas”)。

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

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

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

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

关于java - 使用 openstack4j 获取上传的对象 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40385145/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com