我将 WindowsAzure.Storage 升级到 4.0.3 我想将文件夹中的 blob 列表输出到网页,单击链接即可下载 blob。由于 blob 位于安全容器中,因此每个 URI 都需要共享访问签名。
我曾经有:
var dir = Container.GetDirectoryReference(folderName);
List<IListBlobItem> blobs = dir.ListBlobs().ToList();
var blobsInFolder = new List<Uri>();
foreach (IListBlobItem listBlobItem in blobs)
{
var blob = Container.GetBlockBlobReference(listBlobItem.Uri.ToString());
string sasBlobToken = blob.GetSharedAccessSignature(_sasConstraints);
blobsInFolder.Add(new Uri(blob.Uri + sasBlobToken));
}
return blobsInFolder;
这不再有效,因为 GetBlockBlobReference 不再接受 URI,而是接受文件名。 IListBlobItem 不包含文件名。
我可以开始切碎 Uri 以获取文件夹和文件名
var blob = Container.GetBlockBlobReference(folderName + "/" + Path.GetFileName(listBlobItem.Uri.AbsolutePath));
...但我觉得这是错误的方式(我不应该这样做?)。有人可以指出我正确的方法吗?
最佳答案
尝试将 IListBlobItem
转换为 CloudBlockBlob
foreach (IListBlobItem listBlobItem in blobs)
{
var blob = (CloudBlockBlob) listBlobItem;
string sasBlobToken = blob.GetSharedAccessSignature(_sasConstraints);
blobsInFolder.Add(new Uri(blob.Uri + sasBlobToken));
}
return blobsInFolder;
关于azure - 不确定使用 SharedAccess token 列出 blob 的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31320637/