如何在ASP.NET Core Web应用程序中访问Blob存储子容器?

时间:2020-04-03 17:45:37

标签: azure asp.net-core azure-storage-blobs azure-blob-storage

我创建了一个解决方案来访问我的asp.net core 3.1应用程序中的容器内容,并将该内容作为列表返回到我的视图中。目前,应用程序访问了名为upload的根容器中的数据,但是此容器有许多子容器,我想在称为1799的特定容器中列出这些blob。

因此,我不想访问upload并向我展示该容器的全部内容,而是要访问upload/1799并列出该容器中的所有blob。

我仍然看不到将此子容器添加到我的方法中并允许发生这种情况,任何人都可以帮忙吗?

到目前为止,这是我的代码:

CarController.cs

using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;

namespace MyProject.Controllers
{
    public class HomeController : Controller
    {
        private readonly IConfiguration _configuration;
        private readonly string accessKey = string.Empty;

        public HomeController(IConfiguration configuration)
        {    
            _configuration = configuration;
            accessKey = _configuration.GetConnectionString("AzureStorage");
        }

        [HttpGet]        
        public IActionResult Edit(int id)
        {
        var car = _carService.GetVessel(id);           

        string strContainerName = "uploads";
        string subdir = "1799";
        var filelist = new List<BlobListViewModel>();

        BlobServiceClient blobServiceClient = new BlobServiceClient(accessKey);

        BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient(strContainerName);            
        var blobs = containerClient.GetBlobs();

        foreach (var item in blobs)
        {
            filelist.Add(new BlobListViewModel
            {
                FileName = item.Name                    
            });
        }
        return View(filelist);
    }
}        

我已经浏览了所有文档,但找不到与此相关的任何内容。

1 个答案:

答案 0 :(得分:0)

感谢大卫·布朗(David Browne)的评论,实际上GetBlob()中有一个前缀选项。在某些方面,它们像微型过滤器一样工作,可让您定义返回的属性和Blob状态等。这是我的代码,其中选项Default和{{ 1}}。

Trait