Skip to content

Azure Storage 系列(三)Blob 参数设置说明

Azure Storage 系列(三)Blob 参数设置说明

一,引言

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

——————–我是分割线——————–

Azure Blob Storage存储系列:

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

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

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

4,Azure Storage系列(四)在.Net上使用Table Storage

二,正文

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

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

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

BlobService

services.AddSingleton();

3,BlobService方法

3.1,获取Blog信息

#region 01,获取Blob,根据blob名称+async Task GetBlobAsync(string name)

///

/// 获取Blob,根据blob名称

///

/// blob名称

///

public async Task 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> ListBlobsNameAsync()

///

/// 获取所有Blob名称

///

///

public async Task> ListBlobsNameAsync()

{

    var containerClient = _blobServiceClient.GetBlobContainerClient(“picturecontainer”);

    var items = new List();

    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)

///

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

///

/// 文件路径

/// 文件名称

///

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)

///

/// 上传文件流,根据文件内容和文件名称

///

/// 文件内容

/// 文件名称

///

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)

 ///

 /// 删除Blob

 ///

 /// blob名称

 ///

 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

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

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

相关推荐: TikTok上最受欢迎的五种视频类型

凭借紧随年轻人的时尚潮流,TikTok吸引了大批用户,尽管目前TikTok的商业手段还未完全成熟,但TikTok在全球市场的扩张大家有目共睹,推广效应逐渐凸显。大部分出海品牌已经将TikTok列为推广的新途径。 TikTok作为正在席卷全球的内容消费平台,对于…

    码刀科技(www.lekshop.cn)是国内知名企业级电商平台提供商,为企业级商家提供最佳的电商平台搭建(多种模式电商平台搭建:B2B/B2B2C/B2C/O2O/新零售/跨境等)、平台管理系统开发及互联网采购解决方案服务, 联系客服了解更多.

    电子商务网站建设的重要性和好处