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

Я пытаюсь аккуратно подключить метод, чтобы получить список больших двоичных объектов в указанном контейнере и вернуть его в представление в моем ASP. NET основном приложении. Глядя на документацию Microsoft, я не вижу никаких примеров того, как это делается, за исключением консольного приложения, но это вызывает у меня большую путаницу по поводу реализации.

Вот код, начинающийся с метода Edit моего HomeController. Это достаточно просто, id передается и данные возвращаются, этот Id передается методу BlobStorageService ListBlobsAsync для определения правильного контейнера для всех файлов.

HomeController / Редактировать

[HttpGet]        
public IActionResult Edit(int id)
{
    var car = _carService.GetCar(id);
    BlobStorageService objBlob = new BlobStorageService(accessKey);
    objBlob.ListBlobsAsync(car.Id.ToString());
    return View(car);
}

Вот мой BlobStorageService.cs

BlobStorageService

public async void ListBlobsAsync(string id)
{
    //Folder Structure /uploads/car/<id>/contents
    string strContainerName = "uploads";
    string pathPrefix = "car";

    CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(accessKey);
    CloudBlobClient cloudBlobClient = cloudStorageAccount.CreateCloudBlobClient();

    CloudBlobContainer cloudBlobContainer = cloudBlobClient.GetContainerReference(strContainerName);                        
    CloudBlobDirectory blobDirectory = cloudBlobContainer.GetDirectoryReference(pathPrefix);
    CloudBlockBlob blockBlob = blobDirectory.GetBlockBlobReference(id);

    await blockBlob.DownloadBlockListAsync();
}

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

1 Ответ

1 голос
/ 03 апреля 2020

Я думаю, что вы используете Microsoft. WindowsAzure .Storage package. Если вы можете использовать пакет Azure.Storage.Blobs, попробуйте следующий код:

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

namespace ConsoleApp2
{
    class Program
    {
        static string connectionString = "DefaultEndpointsProtocol=https;AccountName=storage******c9709;AccountKey=v**************************************;EndpointSuffix=core.windows.net";
        static string container = "azure-webjobs-hosts";
        static void Main(string[] args)
        {
            // Get a reference to a container named "sample-container" and then create it
            BlobContainerClient blobContainerClient = new BlobContainerClient(connectionString, container);
            blobContainerClient.CreateIfNotExists();
            Console.WriteLine("Listing blobs...");
            // List all blobs in the container
            var blobs = blobContainerClient.GetBlobs();
            foreach (BlobItem blobItem in blobs)
            {
                Console.WriteLine("\t" + blobItem.Name);
            }            
            Console.Read();
        }
    }
}

Выход

enter image description here

Вы также можете скачать содержимое блоба. Проверьте ссылку

...