我想使用azure blob rest api创建文件夹,还想检查文件夹是否存在。
Hierarchy:
arjun/images/
arjun/Videos/001.avi
arjun/Vidos/002.avi
img001.jpg
我尝试发送PUT请求以创建带路径的文件夹 例如
"arjun/images/"
:
- 这会创建一个文件夹但不是空的。
- 正在创建一个文件夹中没有名称的空文件。
醇>
现在,即使这是正确的,另一个问题是当我想检查文件夹是否存在时:
200 Ok message
始终为Blob element empty
"arjun/xyz/"
。 因此,无法判断文件夹是否存在或是否为空。
即。包含前缀
"arjun/images/
和@app.route('/') def home(): docs = [] for doc in db.person.find(): doc.pop('_id') docs.append(doc) return jsonify(docs)
的blob列表请求 两者都会成功但会有反应体空,因为两者都没有 包含任何内容。但是,实际上第一个文件夹xyz不存在 和第二个文件夹存在但空着。
答案 0 :(得分:2)
Blob服务基于平面存储方案,而不是分层结构 方案
来源:Blob Names
这清楚地表明Azure Storage Blob实际上没有文件夹层次结构,而“文件夹”只是用于创建虚拟层次结构的虚拟目录。
此外,如果您尝试使用Microsoft Storage Explorer创建虚拟目录,它还会向您突出显示虚拟目录在您将blob放入其中之前不存在,这使得完全有意义,因为虚拟目录在事实只是blob名称的一部分。
总之,如果您“创建”虚拟目录而不将任何blob上传到其中,则该虚拟目录不存在。
答案 1 :(得分:2)
正如David Makogon和juvchan所说,Azure存储blob没有文件夹层次结构。如果“文件夹”中没有blob,则表示“文件夹”不存在的含义相同。如果“文件夹”中有blob,那么我们可以从List blobs API响应主体获取列表blob计数。因此,我们无需担心文件夹是否存在或是空的,它们都意味着它不存在。