使用 openstack4j 获取上传的对象 URL
Get uploaded object URL using openstack4j
目前我正在使用 openstack4j 将对象放入 public 可读容器中。上传工作正常(我可以通过将对象拼凑在一起来获得对象的 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,您可以使用此代码获取 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();
}
}
}
}
其中 os
是 org.openstack4j.api.OSClient.OSClientV3
的实例。
您应该查找您的凭据中提到的区域(在我的例子中是 "dallas")。
获得此端点的 url 后,您可以使用它为您的对象创建 URL:
objectUrl + "/" + containerName + "/" + objectName
这将导致(作为示例,它不会 link 实际对象):
https://dal.objectstorage.open.softlayer.com/v1/AUTH_2440e4fa175452cb2e14506cb5d63ec/MyContainer/uploadedOpbject.jpg
目前我正在使用 openstack4j 将对象放入 public 可读容器中。上传工作正常(我可以通过将对象拼凑在一起来获得对象的 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,您可以使用此代码获取 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();
}
}
}
}
其中 os
是 org.openstack4j.api.OSClient.OSClientV3
的实例。
您应该查找您的凭据中提到的区域(在我的例子中是 "dallas")。
获得此端点的 url 后,您可以使用它为您的对象创建 URL:
objectUrl + "/" + containerName + "/" + objectName
这将导致(作为示例,它不会 link 实际对象):
https://dal.objectstorage.open.softlayer.com/v1/AUTH_2440e4fa175452cb2e14506cb5d63ec/MyContainer/uploadedOpbject.jpg