azure - 不确定使用 SharedAccess token 列出 blob 的正确方法

标签 azure azure-storage azure-blob-storage

我将 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/

相关文章:

通过 Powershell 的 Azure 克隆应用程序 - InternalServerError

azure - 从 Azure Function 调用 Azure SQL 数据库时出现暂时性错误

Azure Powershell : Find the creator of a virtual machine

sql-server - 在 Azure 上创建弹性作业代理后,导出失败

azure - Azure 生命周期管理如何影响软删除项目

azure - 无法从程序集“Microsoft.WindowsAzure.Storage,版本 = 4.3.0.0”加载类型 'Microsoft.WindowsAzure.Storage.Blob.CloudAppendBlob'

c# - Windows Azure : Storage Client Exception Unhandled

c# 将http请求发送到azure存储

azure - Azure VM快照可以安全删除吗?

c# - Azure Data Lake Gen2 - 如何使用 C# 将文件从文件夹移动到另一个文件夹