列出浏览器中的Azure存储blob内容



我试图找到一种方法,我可以共享一个存储容器的SAS URL,并让它在浏览器中列出内容(文件夹和文件)。层级命名空间是启用的所以存储帐户是ADLS Gen 2

SAS url如果指向一个文件就可以正常工作。但如果我只使用url来包含目录

就行不通了的例子:

https://<account>.blob.core.windows.net/test/test.json?.... <-- works
https://<account>.blob.core.windows.net/test?.... <-- doesn't work
https://<account>.blob.core.windows.net/test?sv=2020-10-02&st=2022-05-24T09%3A13%3A43Z&se=2022-05-25T09%3A13%3A43Z&sr=c&sp=rl&sig=H9D55HKUrw4MAkdfsdfri5k3v8%3D

和错误

Signature did not match. String to sign used was rl

SAS URL没有任何问题,因为我可以使用存储资源管理器连接。

我试了两件事

  1. Azure Blob浏览器Chrome扩展https://chrome.google.com/webstore/detail/azure-blob-browser/okdhfjbpehgfodoknombaehkhoobmefi
  2. 在https://github.com/tylergibson/azure-blob-list上传javascript代码到容器的根目录

第一个选项使用SAS给出了相同的验证错误。第二个选项可以列出目录和文件,但问题是它将文件夹列为"可下载文件"。是否有更简洁的替代方案允许用户从浏览器查看和下载存储容器文件?

我明白存储资源管理器是要走的路,但只是想探索任何替代之前放弃

要从浏览器中列出容器的内容,需要做两件事:

首先:设置你的SAS有两个权限:Read. 如果只添加Read权限,您不能列出容器的内容。

下一步:向您在浏览器中访问的URI附加两个额外的查询字符串参数:

<<ul>
  • restype =容器/gh><<li> comp =列表/gh>所以,你会得到这样的结果:

    https://<acct>.blob.core.windows.net/<container>?restype=container&comp=list&sp=rl&st=2022-05-24T12:16:02Z&se=2022-05-24T20:16:02Z&spr=https&sv=2020-08-04&sr=c&sig=...
    
  • 最新更新