Azure Storage 系列(三)Blob 参数设置说明,azure blob 性能-ESG跨境

Azure Storage 系列(三)Blob 参数设置说明,azure blob 性能

来源网络
来源网络
2022-05-31
点赞icon 0
查看icon 668

Azure Storage 系列(三)Blob 参数设置说明,azure blob 性能Azure Storage 系列(三)Blob 参数设置说明一,引言上一篇将Azure Blob存储的时候,有使用到一个.NET Core Web项目,通过代码的方式进行操作Azure Blob的数据,接着上一篇的内容,今天继续看一......

Azure Storage 系列(三)Blob 参数设置说明,azure 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=newBlobServiceClient(Configuration.GetValuestring(AzureBlobStorageConnectionString)));

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

BlobService

services.AddSingletonIBlobSergvice,BlobService();

3,BlobService方法

3.1,获取Blog信息

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

/// summary

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

/// /summary

/// param name=nameblob名称/param

/// returns/returns

public async TaskAzure.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 TaskIEnumerablestring ListBlobsNameAsync()

/// summary

/// 获取所有Blob名称

/// /summary

/// returns/returns

public async TaskIEnumerablestring ListBlobsNameAsync()

{

  var containerClient = _blobServiceClient.GetBlobContainerClient(picturecontainer);

  var items = new Liststring();

  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=blobNameblob名称/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

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

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


文章推荐
AppGallery Connect AppLinking链接有效期大揭秘,appgalleryconnect使用教程
Google  外贸平台推广如何进行有效优化,谷歌推广怎么用关键词工具
Glu 通过在 Eternity Warriors 3 中添加游戏礼物功能提高玩家参与度
Flutter新广告格式现开放Beta测试申请,flutter视频客户端


特别声明:以上文章内容仅代表作者本人观点,不代表ESG跨境电商观点或立场。如有关于作品内容、版权或其它问题请于作品发表后的30日内与ESG跨境电商联系。

搜索 放大镜
ESG专业服务案例
查看
1
1个月孵化,GMV增长4400%
【能解决问题的才叫资源 能赚钱的才叫专业】 >> Gmarket卖家店铺经过ESG跨境客户经理优化,月GMV达到20万美金!
2
对接平台官方关键人,3天解封店铺
【精准资源对接 极速解决问题】 >> ESG跨境帮我解决了韩国平台店铺异常问题——运营韩国平台的卖家
3
ESG速度!5小时,PayPal解封
【用资源解决难题 以效率展现专业】 >> ESG拥有Paypal支付和Onbuy平台双绿通道为卖家保驾护航!
4
据理力争,客户产品喜获0竞争绿洲
【只要资源好 跨境弯路少】>> ESG跨境通过专业市场调研分析产品数据,向平台争取机会,卖家成功上架市场热卖而平台稀缺产品,拓展了西班牙新商机!
韩国平台交流群
加入
韩国平台交流群
扫码进群
欧洲多平台交流群
加入
欧洲多平台交流群
扫码进群
美国卖家交流群
加入
美国卖家交流群
扫码进群
ESG跨境专属福利分享群
加入
ESG跨境专属福利分享群
扫码进群
拉美电商交流群
加入
拉美电商交流群
扫码进群
亚马逊跨境增长交流群
加入
亚马逊跨境增长交流群
扫码进群
《CD平台自注册指南》
《韩国站内推广指南》
《韩国热销品预测》
《开店大全-俄罗斯篇》
《开店大全-日韩篇》
《开店大全-拉美篇》
《开店大全-欧洲篇》
《开店大全-蓝海篇》
《开店大全-北美篇》
《开店大全-南亚篇》
通过ESG入驻平台,您将解锁
绿色通道,更高的入驻成功率
专业1v1客户经理服务
运营实操指导
运营提效资源福利
平台官方专属优惠

立即登记,定期获得更多资讯

订阅
联系顾问

平台顾问

平台顾问 平台顾问

微信扫一扫
马上联系在线顾问

icon icon

小程序

微信小程序

ESG跨境小程序
手机入驻更便捷

icon icon

返回顶部

进行中
全球平台详解——拉美篇
报名中
Baidu
map