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

时间:2021-07-15 | 标签: | 作者:Q8 | 来源:Allen网络

小提示:您能找到这篇{Azure Storage 系列(三)Blob 参数设置说明}绝对不是偶然,我们能帮您找到潜在客户,解决您的困扰。如果您对本页介绍的Azure Storage 系列(三)Blob 参数设置说明内容感兴趣,有相关需求意向欢迎拨打我们的服务热线,或留言咨询,我们将第一时间联系您!

< font-size: 16px;">一,引言

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

< font-size: 16px;">--------------------我是分割线--------------------

< font-size: 16px;">Azure Blob Storage存储系列:

< font-size: 16px;">1,Azure Storage系列(一)入门简介

< font-size: 16px;">2,Azure Storage系列(二).NET Core Web项目中操作Blob存储

< font-size: 16px;">3,Azure Storage系列(三)Blob参数设置说明

< font-size: 16px;">4,Azure Storage系列(四)在.Net上使用Table Storage

< font-size: 16px;">二,正文

< font-size: 16px;">1,配置Blob连接字符串

< font-size: 16px;">

{

  "Logging": {

    "LogLevel": {

      "Default": "Information",

      ": "Warning",

      .Hosting.Lifetime": "Information"

    }

  },

  "AllowedHosts": "*",

  "AzureBlobStorageConnectionString": "DefaultEndpointsProtocol=https;AccountName=cnbateblogaccount;AccountKey=FU01h022mn1JjONp+ta0DAXOO7ThK3diY891n9nycsTLGZF83nJpGVCVFhGOfV0wndOOQ==;EndpointSuffix=core.windows.net"

}

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

< font-size: 16px;">Azure会向我们提供两个访问密钥,这样,当重新生成其中一个时,可以使用另一个保持连接。

< font-size: 16px;">

< font-size: 16px;">2,注入BlobServiceClient,BlobService

< font-size: 16px;">

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

< ">

< ">初始化创建一个BlobService类,并且在将appsettings中的key叫”AzureBlobStorageConnection“的链接字符串的值当作参数放到构造函数中
< font-size: 16px;">

< font-size: 16px;">BlobService

< font-size: 16px;">

services.AddSingleton<IBlobSergvice, BlobService>();

< ">3,BlobService方法
< font-size: 16px;">

< font-size: 16px;">3.1,获取Blog信息

< font-size: 16px;">

#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


< font-size: 16px;">获取Blob存储信息具体实现方法,

< font-size: 16px;">1,首先我们可以看到先通过"picturecontainer"名称获取到ContainerClient,再通过需要的Blob名称获取到BlobClient

< font-size: 16px;">2,其次,通过异步的方法“DownloadAsync”进行下载Blob对象,其中包括Blob元数据,属性等信息

< font-size: 16px;">

< font-size: 16px;">3,最后,我们将返回创建BlobInfo对象,在其构造函数中传入返回值的Content和ContentType

< font-size: 16px;">3.2,获取Blog信息

< font-size: 16px;">

#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存储信息具体实现方法,
< font-size: 16px;">

< font-size: 16px;">1,首先我们可以看到先通过"picturecontainer"名称获取到ContainerClient,再通过需要的Blob名称获取到BlobClient

< font-size: 16px;">2,其次,通过异步foreach调用ContainerClient的GetBlobsAsync“的方法,当前方法有多个默认参数

< font-size: 16px;">BlobTraits(Blob特性):默认获取包含所有特性的标识

< font-size: 16px;">BlobStates(Blob状态):指定应包含所有状态的Blob的标志

< font-size: 16px;">prefix(前缀):指定一个字符串,该字符串对结果进行过滤以仅返回其名称以指定的开头的Blob前缀

< font-size: 16px;">cancellationToken:传播有关应取消操作的通知

< font-size: 16px;">

< font-size: 16px;">3,最后,将每一项的Blob的名称添加到集合中。

< font-size: 16px;">3.3,根据文件路径和文件名称上传文件

< font-size: 16px;">

#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)

{

  &nb公关危机的宣传材料sp; var containerClient = _blobServiceClient.GetBlobContainerClient("picturecontainer");

    var blobClient = containerClient.GetBlobClient(filename);



    await blobClient.UploadAsync(filePath, new BlobHttpHeaders { ContentType = filePath.GetContentType() });

 }

 #endregion


< ">上传Blob数据具体实现方法
< font-size: 16px;">

< font-size: 16px;">1,首先我们可以看到先通过"picturecontainer"名称获取到ContainerClient,再通过需要的Blob名称获取到BlobClient

< font-size: 16px;">2,最后通过异步上传文件,此时需要指定文件的路径,以及在BlobHttpHeaders中指定文件内容的ContentType

< font-size: 16px;">3.4,上传流

< font-size: 16px;">

#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数据具体实现方法

< font-size: 16px;">1,首先我们可以看到先通过"picturecontainer"名称获取到ContainerClient,再通过需要的Blob名称获取到BlobClient

< font-size: 16px;">2,其次,将上传的字符串转化成字节流

< font-size: 16px;">3,最后通过异步字节流上传,以及在BlobHttpHeaders中指定文件内容的ContentType

< font-size: 16px;">3.5删除Blob数据

< font-size: 16px;">

#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具体实现方法
< font-size: 16px;">

< font-size: 16px;">1,首先我们可以看到先通过"picturecontainer"名称获取到ContainerClient,再通过需要的Blob名称获取到BlobClient

< font-size: 16px;">2,最后调用异步”DeleteIfExistsAsync“方法,将blob进行删除

< font-size: 16px;">

< font-size: 16px;">ok,具体针对于Blob的增删查的方法就介绍完成



< font-size: 16px;">三,结尾

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

< font-size: 16px;">github:https://github.com/yunqian44/Azure.Storage.git

< font-size: 16px;">作者:Allen

< font-size: 16px;">版权:转载请在文章明显位置注明作者及出处。如发现错误,欢迎批评指正。

< font-size: 16px;">作者:Allen版权:转载请在文章明显位置注明作者及出处。网络舆情监测与预警如发现错误,欢迎批评指正。

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

上一篇:节假日旺季,Facebook广告如何部署?
下一篇:玩转Facebook Live,你才是幕前玩家


版权声明:以上主题为“Azure Storage 系列(三)Blob 参数设置说明"的内容可能是本站网友自行发布,或者来至于网络。如有侵权欢迎联系我们客服QQ处理,谢谢。
相关内容
推荐内容
扫码咨询
    Azure Storage 系列(三)Blob 参数设置说明
    打开微信扫码或长按识别二维码

小提示:您应该对本页介绍的“Azure Storage 系列(三)Blob 参数设置说明”相关内容感兴趣,若您有相关需求欢迎拨打我们的服务热线或留言咨询,我们尽快与您联系沟通Azure Storage 系列(三)Blob 参数设置说明的相关事宜。

关键词:Azure,Storage,系列(三)Bl

关于 | 业务 | 案例 | 免责 | 隐私
客服邮箱:sales@1330.com.cn
电话:400-021-1330 | 客服QQ:865612759
沪ICP备12034177号 | 沪公网安备31010702002418号