首页 > 解决方案 > 将文件插入天蓝色容器

问题描述

我有这段代码可以正常工作,但是我现在需要.net核心,它不起作用:

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 中没有相同的库,所以我不知道要使用哪些库才能列出容器并发送文件。

标签: .netazureasp.net-core

解决方案


如果您只是在寻找 .net 核心代码来上传 blob 和列出容器,只需试试下面的这个 .net 核心控制台应用程序:

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

        }

    }

}

结果: 在此处输入图像描述 上传的文件: 在此处输入图像描述


推荐阅读