不确定使用 SharedAccess 令牌列出 blob 的正确方法
Unsure of correct method to list blobs with a SharedAccess Token
我已将 WindowsAzure.Storage 升级到 4.0.3
我想将文件夹中的 blob 列表输出到网页,单击 link 可下载 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;
我已将 WindowsAzure.Storage 升级到 4.0.3 我想将文件夹中的 blob 列表输出到网页,单击 link 可下载 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;