Вставить файл в контейнер azure

#.net #azure #asp.net-core

#.net #azure #asp.net-ядро

Вопрос:

У меня есть этот код, который работает нормально, однако мне нужно сейчас для .net core, он не работает:

 public class StorageAzure
{
    private CloudStorageAccount storageAccount;
    private CloudBlobContainer containerPadrao;
    public StorageAzure()
    {
        this.storageAccount = CloudStorageAccount.Parse(
            CloudConfigurationManager.GetSetting("StorageConnectionString"));

        this.containerPadrao = inicializarContainer();
    }

    private List<CloudBlobContainer> ListaContainers()
    {
        CloudBlobClient blobCLient = storageAccount.CreateCloudBlobClient();
        return blobCLient.ListContainers().ToList();
    }

    private CloudBlobContainer getContainer(string NomeContainer)
    {
        CloudBlobClient blobCLient = storageAccount.CreateCloudBlobClient();
        return blobCLient.ListContainers().ToList().Where(c => c.Name == NomeContainer).FirstOrDefault();
    }

    private CloudBlobContainer inicializarContainer()
    {
        return getContainer(ConfigurationManager.AppSettings["containerpadrao"]);
    }

    public void AdicionarArquivo(string caminho, string nome)
    {
        CloudBlockBlob blob = containerPadrao.GetBlockBlobReference(nome);

        blob.UploadFromFile(caminho, FileMode.Open);
    }
}
  

Как я могу перечислить контейнеры в .net core?
Он не может найти ListContainers, я нашел несколько примеров, но ни один из них не смог заставить его работать.
Редактировать

В .netcore нет одинаковых библиотек, поэтому я не знаю, какие библиотеки использовать, чтобы иметь возможность перечислять контейнер, а также отправлять файл.

Комментарии:

1. Пожалуйста, опишите «это не работает»

2. @CSharpRocks извините, я отредактировал

Ответ №1:

Если вы просто ищете код .net core для загрузки больших двоичных объектов и контейнеров со списком, просто попробуйте это консольное приложение .net core ниже:

 using Azure.Storage.Blobs;
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;


namespace blobUpload
{
    class Program
    {
        static void Main(string[] args)
        {
            string localFilePath = "<path of file to upload>";
            string containerName = "<container name>";
            string storageConnStr = "<storage account connection string>";


            BlobServiceClient blobServiceClient = new BlobServiceClient(storageConnStr);
            Console.WriteLine("====listContainers====");
            listContainers(blobServiceClient);

            Console.WriteLine("====listContainerBlobs====");
            listContainerBlobs(blobServiceClient, containerName);

            Console.WriteLine("====upload files to a Container====");
            uploadFiles(blobServiceClient, localFilePath, containerName);


        }

        public static void uploadFiles(BlobServiceClient blobServiceClient,String filePath,string containerName) {
            var container = blobServiceClient.GetBlobContainerClient(containerName);
            var blobClient = container.GetBlobClient("testFile.zip");
            Console.WriteLine(blobClient.UploadAsync(filePath).GetAwaiter().GetResult());
        }

        public static void listContainers(BlobServiceClient blobServiceClient) {
            var containerEmulator = blobServiceClient.GetBlobContainers().GetEnumerator();
            
            while (containerEmulator.MoveNext()) {
                Console.WriteLine(containerEmulator.Current.Name);
            }
        }

        public static void listContainerBlobs(BlobServiceClient blobServiceClient,string containerName)
        {
            var container = blobServiceClient.GetBlobContainerClient(containerName);
            var blobEmulator = container.GetBlobs().GetEnumerator();
            while (blobEmulator.MoveNext())
            {
                Console.WriteLine(blobEmulator.Current.Name);
            }

        }

    }

}
  

Результат :
введите описание изображения здесь
загруженный файл:
введите описание изображения здесь

Комментарии:

1. Как мне получить настройку appsettings.json? Я пробовал этот способ и не смог. var builder = new ConfigurationBuilder() .AddJsonFile("appsettings.json"); IConfigurationRoot configuration = builder.Build(); string connectionString = configuration.GetSection("AzureStorageConfigVO").ToString();

2. Привет @Mari, если вы разрабатываете asp.net основное веб-приложение, просто обратитесь к этому: learn.microsoft.com/en-us/aspnet/core/fundamentals /… . Кстати, этот вопрос не имеет ничего общего с вашим первым вопросом. Если ваш первый вопрос был решен, пожалуйста, нажмите на галочку рядом с ответом, чтобы переключить его с серого на заполненный или пометить мой пост как ответ, чтобы закрыть этот вопрос. Если у вас есть другие вопросы, пожалуйста, отправьте новый. В stackoverflow это один вопрос, один пост.