#.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 это один вопрос, один пост.