Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用openstack4j获取上传的对象URL_Java_Scala_Openstack - Fatal编程技术网

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

Java 使用openstack4j获取上传的对象URL,java,scala,openstack,Java,Scala,Openstack,目前,我正在使用openstack4j将对象放入一个公开可读的容器中。上传效果很好(我可以通过拼接来获取对象的URL),但如果可能的话,我希望能够直接从库中获取上传对象的公共URL 通过查看文档,我找到了ObjectLocation,但这只提供了对象的路径组件,而不是完整的URL。我有没有办法使用openstack4j获取对象的完整URL 我上传文件的代码是: os.objectStorage.objects.put(containerName, objectName, Payloads.cre

目前,我正在使用openstack4j将对象放入一个公开可读的容器中。上传效果很好(我可以通过拼接来获取对象的URL),但如果可能的话,我希望能够直接从库中获取上传对象的公共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();
                    }
                }
            }
        }
其中,
os
org.openstack4j.api.OSClient.OSClientV3
的一个实例。 您应该查找凭证中提到的地区(在我的例子中是“达拉斯”)

获得此端点的url后,可以使用它为对象创建url:

objectUrl + "/" + containerName + "/" + objectName
这将导致(例如,它不链接到实际对象):


这很有效。我的最终解决方案(在Scala中)是:
os.getToken.getCatalog.filter([uu.getName==“swift”).flatMap([uu.getEndpoints.toList”).find(e=>e.getRegion==“dallas”和&e.getIface==faceting.PUBLIC)。map(e=>s“${e.getUrl.toString}${ObjectLocation.create(container,objectName.getURI}”)
https://dal.objectstorage.open.softlayer.com/v1/AUTH_2440e4fa175452cb2e14506cb5d63ec/MyContainer/uploadedOpbject.jpg