如何使用 python-swiftclient 在 OpenStack 中创建临时 url?

问题描述

我使用 python-swiftclient 连接到 OpenStack 对象存储。在 some examples from the documentation 之后,我现在可以上传文件

container = 'new-container'
local_file_path = 'file.txt'

conn = Connection(**OBJECT_STORE_INFO)
with open(local_file_path,'r') as local:
    r = conn.put_object(
        container,local_file_path,contents=local.read(),content_type='application/zip'
    )
    print("File created")

这很好用,我现在想为该文件创建一个临时 url。在我找到的源代码the function generate_temp_url(),它至少需要四个参数:path、seconds、key、method

对于路径,the documentation says

:param path: The full path to the Swift object or prefix if
    a prefix-based temporary URL should be generated. Example:
    /v1/AUTH_account/c/o or /v1/AUTH_account/c/prefix.

我很难找到这条路。我尝试了几种变体(我的本地路径,我从 Web 界面获取文件的 url),但没有任何效果。我可以获得有关文件标题

resp_headers = conn.head_object(container,local_file_path)

返回这个:

{'content-length': '12','accept-ranges': 'bytes','last-modified': 'Wed,10 Feb 2021 16:10:19 GMT','etag': '4d79d5df13513c295916112b9b3e25e0','x-timestamp': '1612973418.28837','content-type': 'text/plain','x-trans-id': 'tx045dc3b415374a81a9a80-00602407c4','date': 'Wed,10 Feb 2021 16:20:20 GMT','age': '0','via': 'our.objectstore.com'}

但这并没有显示任何有用的信息。

this documentation 中,它给出了以下示例:

示例:/v1/AUTH_account/c/o 或:http://saio:8080/v1/AUTH_account/c/o

我的文件的直接网址是:https://8d078638c1a547c09e0b5f34834554f1.ourobjectstore.com/new-container/file.txt

所以这与示例中的网址完全不同。

有人知道这里发生了什么吗?我在哪里可以找到这个所谓的“路径”,以便我可以创建临时 url?

解决方法

最后@RakshaSaini 写了第一条评论,将我指向the official documentation here。它包含一个不起作用但足够接近的示例。我做了如下调整,现在它对我们有用了:

const getAllNodesExceptBrAndLi = htmlString => {
  const template = document.createElement('template');
  template.innerHTML = htmlString;
  const allNodes = template.content.querySelectorAll('*');

  return [...allNodes].filter(node => node.tagName !== 'BR' && node.tagName !== 'LI');
};

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...