azure - GetBlockBlobReference 未提供文件夹路径详细信息

标签 azure azure-storage azure-blob-storage

enter image description here我正在尝试从 Azure 存储资源管理器下载 block blob。我能够下载容器根目录中存在的所有 block blob。我无法下载嵌套在容器内子文件夹中的 blob

        CloudBlockBlob blob = container.GetBlockBlobReference(fileName);

        SharedAccessBlobPolicy sasConstraints = new SharedAccessBlobPolicy();            
        sasConstraints.SharedAccessExpiryTime = DateTimeOffset.UtcNow.AddHours(1);
        sasConstraints.Permissions = SharedAccessBlobPermissions.Read;

        string sasBlobToken = blob.GetSharedAccessSignature(sasConstraints);

        return blob.Uri.AbsoluteUri + sasBlobToken;

最佳答案

我无法使用 GetBlockBlobReference(fileName) 获取 blockBlob 的绝对路径。下面的代码解决了我的问题。我获得了列表,然后使用 LINQ 获取带有绝对路径详细信息的 blockBlob。 This post helped as well

        do
        {
            var listingResult = await blobDirectory.ListBlobsSegmentedAsync(useFlatBlobListing, blobListingDetails, maxBlobsPerRequest, continuationToken, null, null);


           //The below lined fetched the blockBlob with the correct directory details.
            var blockBlob = listingResult.Results.Where(x => x.Uri.AbsolutePath.Contains(fileName)).Count()>0 ? (CloudBlockBlob)listingResult.Results.Where(x=>x.Uri.AbsolutePath.Contains(fileName)).FirstOrDefault():null;

            if (blockBlob != null)
            {                    
                sasConstraints.SharedAccessExpiryTime = expiryTimeSAS;
                sasConstraints.Permissions = SharedAccessBlobPermissions.Read;                    
                string sasBlobToken = blockBlob.GetSharedAccessSignature(sasConstraints);                    
                return blockBlob.Uri.AbsoluteUri + sasBlobToken;                    
            }                
            continuationToken = listingResult.ContinuationToken;                

        } while (continuationToken != null);

如果有任何其他有效的方法可以从容器中的目录列表中提取 blob 信息,请纠正我。

关于azure - GetBlockBlobReference 未提供文件夹路径详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51845896/

相关文章:

c# - 使用 Auth0 进行 Azure AD 身份验证

Azure ML 中的 R 网络抓取错误

azure - 在哪里可以找到 Azure 存储 Blob 容器中用于 Azure 搜索索引的 "Fields"内容?

rest - 如何为同一个 Azure blob 生成多个临时访问 URL?

c# - Azure Functions EventGrid 触发器

c# - Dynamics AX 移动应用程序

azure - Microsoft Azure 备份使用什么方法来加密数据?

azure - 使用服务主体对 Azure Data Lake Storage Gen 2 进行 REST API 调用的 OAuth token

azure - Azure 存储帐户的价格是每个帐户还是单一价格并且可以创建多个存储帐户?

java - 如何使用 Java 在 azure blob 中私下上传文件后获取 SAS URL