Как получить доступ к подконтейнерам хранилища BLOB-объектов в моем веб-приложении ASP. NET Core? - PullRequest
0 голосов
/ 03 апреля 2020

Я создал решение для доступа к содержимому моего контейнера в моем приложении asp. net core 3.1 и возврата этого содержимого в виде списка на мой взгляд. В настоящий момент приложение обращается к данным в контейнере root, который называется upload, однако в этом контейнере есть много вложенных контейнеров, и я хотел бы перечислить большие двоичные объекты в определенном c одном из них, называемом 1799. * 1003. *

Итак, вместо доступа к upload и показа мне полного содержимого этого контейнера, я хочу получить доступ к upload/1799 и перечислить все большие двоичные объекты в этом контейнере.

Я все равно не вижу добавьте этот субконтейнер в мой метод и позвольте этому случиться, кто-нибудь может помочь?

Вот мой код:

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 голосов
/ 06 апреля 2020

Спасибо Дэвиду Брауну за его комментарий, в GetBlob() действительно есть опция префикса. Они действуют как мини-фильтры в некотором смысле, позволяя вам определить, какие свойства возвращаются и состояние blob и т. Д. c. Вот мой код, который имеет параметры, установленные на ноль, что означает Default для Trait и State.

[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);            

    //Traits, States, Prefix
    var blobs = containerClient.GetBlobs(0, 0, subdir);

    foreach (var item in blobs)
    {
        filelist.Add(new BlobListViewModel
        {
            FileName = item.Name                    
        });
    }
    return View(filelist);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...