一,引言

  上一篇将 Azure Blob 存储的时候,有使用到一个 .NET  Core Web 项目,通过代码的方式进行操作 Azure Blob 的数据,接着上一篇的内容,今天继续看一下代码,具体看看 Azure.Storage 中的类,方法。

--------------------我是分割线--------------------

Azure Blob Storage 存储系列:

1,Azure Storage 系列(一)入门简介

2,Azure Storage 系列(二) .NET Core Web 项目中操作 Blob 存储

3,Azure Blob (三)参数设置说明

二,正文

1,配置 Blob 连接字符串

{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
"AzureBlobStorageConnectionString": "DefaultEndpointsProtocol=https;AccountName=cnbateblogaccount;AccountKey=FU01h022mn1JjONp+ta0DAXOO7ThK3diY891n9nycsTLGZF83nJpGVCVFhGOfV0wndOOQ==;EndpointSuffix=core.windows.net"
}

”AzureBlobStorageConnectionString“ 向此 Azure 存储帐户提出请求时,使用访问密钥对应用程序进行身份验证。请采用安全的方式(例如使用 Azure Key Vault)保存访问密钥,不要共享密钥。建议定期重新生成访问密钥。

Azure 会向我们提供两个访问密钥,这样,当重新生成其中一个时,可以使用另一个保持连接。

2,注入 BlobServiceClient,BlobService

BlobServiceClient

 services.AddSingleton(x => new BlobServiceClient(Configuration.GetValue<string>("AzureBlobStorageConnectionString")));

初始化  创建一个BlobService类,并且在将 appsettings 中的 key 叫 ”AzureBlobStorageConnection“ 的 链接字符串的值当作参数放到构造函数中

BlobService

services.AddSingleton<IBlobSergvice, BlobService>();

3,BlobService 方法

3.1,获取 Blog 信息

#region 01,获取Blob,根据blob名称+async Task<BlobInfo> GetBlobAsync(string name)
/// <summary>
/// 获取Blob,根据blob名称
/// </summary>
/// <param name="name">blob名称</param>
/// <returns></returns>
public async Task<Azure.Storage.Models.BlobInfo> GetBlobAsync(string name)
{
var containerClient = _blobServiceClient.GetBlobContainerClient("picturecontainer"); var blobClient = containerClient.GetBlobClient(name);
var blobDownLoadInfo = await blobClient.DownloadAsync();
return new Azure.Storage.Models.BlobInfo(blobDownLoadInfo.Value.Content, blobDownLoadInfo.Value.ContentType);
}
#endregion

获取 Blob 存储信息具体实现方法,

  1,首先我们可以看到先通过 "picturecontainer" 名称获取到 ContainerClient,再通过需要的 Blob 名称获取到 BlobClient

  2,其次,通过异步的方法 “DownloadAsync” 进行下载 Blob 对象,其中包括 Blob 元数据,属性等信息

  3,最后,我们将返回创建 BlobInfo 对象,在其构造函数中传入返回值的 Content 和 ContentType

3.2,获取 Blog 信息

#region 02,获取所有Blob名称+async Task<IEnumerable<string>> ListBlobsNameAsync()
/// <summary>
/// 获取所有Blob名称
/// </summary>
/// <returns></returns>
public async Task<IEnumerable<string>> ListBlobsNameAsync()
{
var containerClient = _blobServiceClient.GetBlobContainerClient("picturecontainer");
var items = new List<string>(); await foreach (var blobItem in containerClient.GetBlobsAsync())
{
items.Add(blobItem.Name);
}
return items;
}
#endregion

获取 Blob 存储信息具体实现方法,

  1,首先我们可以看到先通过 "picturecontainer" 名称获取到 ContainerClient,再通过需要的 Blob 名称获取到 BlobClient

  2,其次,通过异步 foreach 调用 ContainerClient 的 GetBlobsAsync“ 的方法,当前方法有多个默认参数

    BlobTraits(Blob特性):默认获取包含所有特性的标识

    BlobStates(Blob状态):指定应包含所有状态的Blob的标志

    prefix(前缀):指定一个字符串,该字符串对结果进行过滤以仅返回其名称以指定的开头的 Blob 前缀

    cancellationToken:传播有关应取消操作的通知

  3,最后,将每一项的 Blob 的名称添加到集合中。

3.3,根据文件路径和文件名称上传文件

#region 03,上传文件,根据文件路径和文件名称+async Task UploadFileBlobAsync(string filePath, string filename)
/// <summary>
/// 上传文件,根据文件路径和文件名称
/// </summary>
/// <param name="filePath">文件路径</param>
/// <param name="filename">文件名称</param>
/// <returns></returns>
public async Task UploadFileBlobAsync(string filePath, string filename)
{
var containerClient = _blobServiceClient.GetBlobContainerClient("picturecontainer");
var blobClient = containerClient.GetBlobClient(filename);
await blobClient.UploadAsync(filePath, new BlobHttpHeaders { ContentType = filePath.GetContentType() });
}
#endregion

上传Blob数据具体实现方法  

  1,首先我们可以看到先通过 "picturecontainer" 名称获取到 ContainerClient,再通过需要的 Blob 名称获取到 BlobClient

  2,最后通过异步上传文件,此时需要指定文件的路径,以及在 BlobHttpHeaders 中指定文件内容的 ContentType

3.4,上传流

#region 04,上传文件流,根据文件内容和文件名称+async Task UploadContentBlobAsync(string content, string filename)
/// <summary>
/// 上传文件流,根据文件内容和文件名称
/// </summary>
/// <param name="content">文件内容</param>
/// <param name="filename">文件名称</param>
/// <returns></returns>
public async Task UploadContentBlobAsync(string content, string filename)
{
var containerClient = _blobServiceClient.GetBlobContainerClient("picturecontainer");
var blobClient = containerClient.GetBlobClient(filename);
var bytes = Encoding.UTF8.GetBytes(content);
await using var memoryStream = new MemoryStream(bytes);
await blobClient.UploadAsync(memoryStream, new BlobHttpHeaders() { ContentType = filename.GetContentType() });
}
#endregion

上传Blob数据具体实现方法  

  1,首先我们可以看到先通过 "picturecontainer" 名称获取到 ContainerClient,再通过需要的 Blob 名称获取到 BlobClient

  2,其次,将上传的字符串转化成字节流

  3,最后通过异步字节流上传,以及在 BlobHttpHeaders 中指定文件内容的 ContentType

3.5 删除 Blob 数据

 #region 05,删除Blob+async Task DeleteBlobAsync(string blobName)
/// <summary>
/// 删除Blob
/// </summary>
/// <param name="blobName">blob名称</param>
/// <returns></returns>
public async Task DeleteBlobAsync(string blobName)
{
var containerClient = _blobServiceClient.GetBlobContainerClient("picturecontainer");
var blobClient = containerClient.GetBlobClient(blobName);
await blobClient.DeleteIfExistsAsync();
}
#endregion

删除blob 具体实现方法

  1,首先我们可以看到先通过 "picturecontainer" 名称获取到 ContainerClient,再通过需要的 Blob 名称获取到 BlobClient

  2,最后 调用异步 ”DeleteIfExistsAsync“ 方法,将 blob进行删除

ok,具体针对于Blob 的增 删 查 的方法就介绍完成

三,结尾

  今天内容较少,只是把上一篇关于Blob操作的一些方法贴了出来,讲了一下对于 Blob 的操作,大家也可以通过微软官方文档:Azure Storage Blobs。下一篇将开始新的介绍 Storage 的新内容-----Azure Table Storage

github:https://github.com/yunqian44/Azure.Storage.git

作者:Allen

版权:转载请在文章明显位置注明作者及出处。如发现错误,欢迎批评指正。

Azure Blob (三)参数设置说明的更多相关文章

  1. MySQL Database on Azure 参数设置

    在使用MySQL过程中,经常会根据需要对MySQL的参数进行一些设置和调整.作为PaaS版本的MySQL,MySQL Database on Azure在参数设置方面有一些限制,客户不能像使用on-p ...

  2. JVM系列三:JVM参数设置

    JVM系列三:JVM参数设置.分析   不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM.GC的参数,可以极大的减少由于GC工作,而导致的程序运 ...

  3. Python 操作 Azure Blob Storage

    笔者在<Azure 基础:Blob Storage>一文中介绍了 Azure Blob Storage 的基本概念,并通过 C# 代码展示了如何进行基本的操作.最近笔者需要在 Linux ...

  4. Azure Functions(二)集成 Azure Blob Storage 存储文件

    一,引言 上一篇文章有介绍到什么是 SeverLess ,ServerLess 都有哪些特点,以及多云环境下 ServerLess 都有哪些解决方案.在这众多解决方案中就包括 Function App ...

  5. [New Portal]Windows Azure Storage (14) 使用Azure Blob的PutBlock方法,实现文件的分块、离线上传

    <Windows Azure Platform 系列文章目录> 相关内容 Windows Azure Platform (二十二) Windows Azure Storage Servic ...

  6. hadoop(四): 本地 hbase 集群配置 Azure Blob Storage

    基于 HDP2.4安装(五):集群及组件安装 创建的hadoop集群,修改默认配置,将hbase 存储配置为 Azure Blob Storage 目录: 简述 配置 验证 FAQ 简述: hadoo ...

  7. AzCopy – 上传/下载 Windows Azure Blob 文件

    在我们收到的请求中,有一个频繁出现的请求是提供一种能在 Windows Azure Blob 存储与其本地文件系统之间轻松上传或下载文件的方法.一年半前, 我们很高兴地发布了 AzCopy, Wind ...

  8. [AWS vs Azure] 云计算里AWS和Azure的探究(6) - Amazon Simple Storage Service 和 Microsoft Azure Blob Storage

    这几天Nasuni公司出了一份报告,分析了各个云厂商的云存储的性能,包括Amazon S3,Azure Blob Storage, Google Drive, HP以及Rackspace.其中性能上A ...

  9. Azure Blob Storage 基本用法 -- Azure Storage 之 Blob

    Azure Storage 是微软 Azure 云提供的云端存储解决方案,当前支持的存储类型有 Blob.Queue.File 和 Table. 笔者在<Azure Table storage ...

随机推荐

  1. 关于saltstack的job问题

    问题背景:搭建一个多节点后端集群,使用saltstack作为底层管理,使用Python封装saltstack接口成逻辑层.通过逻辑层的调用实现对整个集群的运维管理. 问题:随着项目中模块的增多,发现s ...

  2. 永久修改Ubuntu的主机名称

    Ubuntu主机名称查看方法,使用hostname命令: [ubuntu@ubuntu ~]$hostname ubuntu 永久修改方法: 修改配置文件: sudo vi /etc/hostname ...

  3. CI4框架应用二 - 项目目录

    我们之前搭建好了CI4的开发环境,下面我们来看一下CI4的目录结构. Administrator@PC- MINGW64 /c/wamp64/www/ci4 $ ls -l total drwxr-x ...

  4. 微信小程序--家庭记账小账本(五)

    (源码已上传至github,https://github.com/xhj1074376195/CostBook_weixin) 今天,尝试弄了账单的表,发现还是弄不了,于是就把账单上的删除功能给去了, ...

  5. AI测温落地趋势:已成日常刚需 产品形态呈细分化发展

    现如今不管走到哪儿,机场.车站.医院.商场.超市等公共场所都已经将体温检测作为常态化防疫手段.自全球疫情发生以来,不管欧洲.亚洲,还是中东.东南亚等国家都已经意识到,疫情防控的第一道关口便是测温. 而 ...

  6. Linux学习笔记之如何把ubuntu下的c文件共享到windows下文件夹

    1.首先可在桌面新建文件夹,或者自己任意路径文件夹都可以, 2.在Linux下点击虚拟机 点击设置 点击选项,选择共享文件夹,点击总是启用,然后添加文件夹,添加你windows下想保存的文件夹   可 ...

  7. JS 模仿京东键盘输入内容

    css代码 .search { width: 300px; height: 80px; margin: 0 auto; position: relative; } .con { display: no ...

  8. Java基础—继承

    继承是面向对象的核心特征之一,是由已有类创建新类的机制.利用继承机制,可以先创建一个具有共性的一般类,然后根据该一般类创建具有特殊性的新类,新类继承一般类的属性和方法,并根据需要增加自己的新属性和方法 ...

  9. Elasticsearch第四篇:索引别名、添加或修改映射规则

    项目中经常出现的问题,例如添加字段.修改字段,那原先的索引规则就要跟着改变,最好是一开始就给索引一个别名,修改字段时新增映射,然后将笔名指向新的映射,当然需要将之前的索引搬迁到新的映射当中. 1.获取 ...

  10. sftp与ftp的区别

    SFTP和FTP非常相似,都支持批量传输(一次传输多个文件),文件夹/目录导航,文件移动,文件夹/目录创建,文件删除等.但还是存在着差异,下面我们来看看SFTP和FTP之间的区别. 1. 安全通道FT ...