.net - 将文件插入天蓝色容器
问题描述
我有这段代码可以正常工作,但是我现在需要.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 中没有相同的库,所以我不知道要使用哪些库才能列出容器并发送文件。
解决方案
如果您只是在寻找 .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);
}
}
}
}
推荐阅读
- rsocket - C# net RSocket 客户端与 Java RSocket 服务器无效的 mime 类型“二进制”
- javascript - 您是否需要前一个节点指针来实现队列?
- c# - 用箭头制作数字选择器的最佳方法是什么?
- javascript - 在 React 中转换为函数式组件时面临的问题
- ruby-on-rails - ruby rspec:如何使存根在每次调用时表现不同
- postgresql - 如何仅查询具有表情符号的数据(postgresql)
- java - GLES20.glShaderSource 什么都不做
- python - Python将数字与熊猫数据框中的值进行比较
- javascript - 如何使用节点 sdk 的唯一密钥策略在 CosmosDB 上强制执行唯一密钥?
- java - 如何从本地 WebSphere 中删除缓存的工件?