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

问题描述 投票:0回答:1

我已经创建了一个解决方案,可以在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);
    }
}        

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

azure asp.net-core azure-storage-blobs azure-blob-storage
1个回答
0
投票

尝试一下:

string strContainerName = "uploads";
string subdir = "1799";

CloudBlobClient client =  account.CreateCloudBlobClient();

CloudBlobDirectory directory =  client.GetBlobDirectoryReference(strContainerName); 

CloudBlobDirectory subDirectory = directory.GetSubdirectory(subdir); 
subDirectory.ListBlobs()
© www.soinside.com 2019 - 2024. All rights reserved.