Azure Storage 系列(二) .NET Core Web 项目中操作 Blob 存储,azure blob stora-ESG跨境

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

来源网络
来源网络
2022-07-05
点赞icon 0
查看icon 781

Azure Storage 系列(二) .NET Core Web 项目中操作 Blob 存储,azure blob storage 数据怎么保存Azure Storage 系列(二) .NET Core Web 项目中操作 Blob 存储一,引言上一篇文章,我们介绍到在实际项目中系统会产生大量的日志文件,用户上传的头......

Azure Storage 系列(二) .NET Core Web 项目中操作 Blob 存储,azure blob storage 数据怎么保存





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

一,引言

上一篇文章,我们介绍到在实际项目中系统会产生大量的日志文件,用户上传的头像等等,同时也介绍到可以使用Azure Blob Storage来存储项目中的一些日志文件,用户头像,用户视频等等。这个时候,有人就会问到,那我大概明白Blob可以存放什么类型的数据了,这个时候就有人问一些问题了

1,什么是Blob?

答Azure Blob存储是非结构化的,它可以保存的数据类型是没有任何限制的。如,pdf文档,json文件,视频,txt文件等。我们常见的类型的文件,它统统可以进行存储。但是Blob不适合需要经常查询的结构化数据,比如说项目中使用的,它们具有比内存和本地磁盘更高的延迟,并且没有可让数据库高效运行查询的索引功能。但是,blob经常用与数据库一起用于存储不可查询的的数据,例如用户头像存储在Blob中,数据库中保存对应用户头像的Blob名称或URL(来自微软官方解释)

其实用可以这么说,如果项目中有对于的图片资源,视频资源,文件等资源,我们就可以考虑到将这些数据都存储在Azure Blob中。今天在文章的后半段我们将通过一个简单的.NET Core Web程序去操作Blob存储对象。

我是分割线

Azure Blob Storage存储系列:

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

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

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

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

二,正文

开始之前我们看看Blob的类型

1,block blob(块blob):由不同大小的块构成,在写入到块blob时,需要将数据上传到块并将其提交到blob。

2,append blob(追加blob):是专用的块blob,它仅支持追加新数据,追加操作非常高效。追加blob非常适用于存储日志或写入流数据等方案。

3,page blob(页blob):专用于涉及随机存取读写的方案。页blob用于存储Azure虚拟机所使用的虚拟硬盘(VHD)文件,但它们非常适用于任何涉及到随机存取的方案。

今天我们演示的是block blob类似,实际项目中,我们是如何进行操作的

1,Azure Portal上进行创建blob数据

找到之前创建好的“cnbateblogaccount”Storage Account,点击图中圈起来的“Containers”,进行创建容器

点击“+Container”,进行创建容器

注意:这里的容器,我们可以理解为用来存储对象的容器

Name:“picturecontainer”

Public access level选择:“Private(no anonymous access)”(私有的,不允许匿名访问)

点击“Create

创建完成后,我们就可以在当前容器页面看到自己创建的”picturecontainer“信息。

我们点击容器进入,尝试在上传一张图片进行测试

点击“Select a file”进行选择

选择“background.jpg”,点击打开

勾选“Overwrite if file already exist”(如果文件存储,就覆盖)

点击“Upload”进行上传

我们可以看到上传的图片文件,并且它的Blob类型是“block blob”

同时,我们可以还有在Portal上进行预览,编辑操作。

ok,上述操作我们是在Azure Portal上进行操作的。接下来我们通过代码进行blob的增删查

2,通过ASP.NET Core Web项目进行Blob数据操作

vs2019新建Web项目

2.1,首先得安装Azure.Storage相关的包

NuGet:Azure.Storage.Blobs

我们创建BlobExplorerController控制器

[HttpGet({BlobName})]

public async TaskIActionResult GetBlob(string blobName)

{

  var data = await blobService.GetBlobAsync(blobName);

  return File(data.Content, data.ContentType);

}

2.2,创建IBlobService接口,和BlobService实现类,新增获取Blob的接口定义和具体实现方法

TaskBlobInfoGetBlobAsync(stringname);

#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

创建BlobInfo返回实体信息

public class BlobInfo

  {

    public BlobInfo(Stream content, string contentType)

    {

      this.Content = content;

      this.ContentType = contentType;

    }

    public Stream Content { get; set; }

    public string ContentType { get; set; }

  }

2.3配置链接字符串

Azure Portal中找到创建的“cnbateaccount”的Azure Blob Atorage,点击“Setting=gt;Access key”

复制图中的“Connection string”

将数据库链接字符串配置在项目的appsettings配置文件中

{

Logging: {

  LogLevel: {

   Default: Information,

   Microsoft: Warning,

   Microsoft.Hosting.Lifetime: Information

  }

},

AllowedHosts: *,

AzureBlobStorageConnectionString: DefaultEndpointsProtocol=https;AccountName=cnbateblogaccount;AccountKey=FU01h022mn1

JjONp+ta0DAXOO7ThK3dxxxxxxxxxxxxxxxxx891n9nycsTLGZF83nJpGvTIZvO5VCVxxxxxx0wndOOQ==;

EndpointSuffix=core.windows.net

}

2.4,注入BlobService,BlobServiceClient

services.AddSingleton(x=gt;new BlobServiceClient(Configuration.GetValuelt;string(AzureBlobStorageConnectionString)));

services.AddSingletonlt;IBlobSergvice,BlobServicegt;();

Ok,我们启动项目进行测试

postman中输入:localhost:9001/Blobs/background.jpg,效果如下图所示:

浏览器访问:http://localhost:9001/Blobs/background.jpg,效果如下图所示:

ok,成功,成功获取到之前在Portal上传的图片

2.5,完善对Blob数据的新增,删除操作

BlobExplorerController完整代码

BlobExplorerController

IBlobSergvice接口类

IBlobSergvice

BlobService实现类

BlobService

UpLoadContentRequest

UpLoadContentRequest

UploadFileRequest

UploadFileRequest

FileExtensions扩展类

FileExtensions

目前我们分别添加了上传图片接口,上传文件接口,删除文件接口

我们分别在postman中进行测试

(1)上传图片

FilePath(文件路径):”C:\Users\admin\Desktop\2020904001.jpg“

FileName(文件名称):”2020904001.jpg“

点击”Send“,我们可以看到响应返回状态码(Status)”200 OK“

同时在Portal上也可以看到刚刚选择的”20200904001.jpg“文件

这里注意一下,为什么我们制定文件的路径,和名称就可以上传文件,并且可以在浏览器中查看,那是因为我们在上传文件中设置文件的请求头的原因

private static readonly FileExtensionContentTypeProvider provider = new FileExtensionContentTypeProvider();

    public static string GetContentType(this string fileName)

    {

      if (!provider.TryGetContentType(fileName, out var contentType))

      {

        contentType = application/octetstream;

      }

      return contentType;

    }

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() });

    }

(2)上传json文件

Content:{Name:zhangsan,Reamrk:This is work!!!}

FileName:”log.json“

点击”Send“,上传Json文件

我们继续在Portal上进行查看上传的json文件

(3)查看Blob信息

接下来还是删除Blob数据的操作,我这里就不做演示了,大家可以自己调用接口进行测试

好的,那今天的内容就先到此结束,今天的目的只是通过简单的demo代码去演示如果操作Azure Blob数据,简单的跑跑代码,在.NET Core中的demo代码是怎么去写的,具体的Azure.Storage类中的方法,参数等今天的内容暂时不去解释。

鼓掌,撒花 ?????????

三,结尾

今天的文章大概介绍了在Portal上如何上传blob图片文件,以及写了一个简单的.NET Core demo程序,通过代码我们我们去控制Blob数据的增删改查,下一篇继续介绍Azure Storage在代码中的操作,也着重讲一下Azure.Storage中的类,以及方法的具体调用和说明。

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

作者:Allen

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

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


文章推荐
Azure Kubernetes 服务的工作原理,kubernetes 云原生微服务
Amazon万圣节爆款产品开始爆发,amazon万圣节
从德国采购好的二手真空镀膜机,二手多弧真空镀膜机
代理进口日本旧设备报关,日本旧机电设备进口报关办理手续


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

搜索 放大镜
韩国平台交流群
加入
韩国平台交流群
扫码进群
欧洲多平台交流群
加入
欧洲多平台交流群
扫码进群
官网询盘
加入
官网询盘
扫码进群
美国卖家交流群
加入
美国卖家交流群
扫码进群
ESG跨境专属福利分享群
加入
ESG跨境专属福利分享群
扫码进群
拉美电商交流群
加入
拉美电商交流群
扫码进群
亚马逊跨境增长交流群
加入
亚马逊跨境增长交流群
扫码进群
亚马逊跨境增长交流群
加入
亚马逊跨境增长交流群
扫码进群
拉美电商交流群
加入
拉美电商交流群
扫码进群
《TikTok综合运营手册》
《TikTok短视频运营手册》
《TikTok直播运营手册》
《TikTok全球趋势报告》
《韩国节日营销指南》
《开店大全-全球合集》
《开店大全-主流平台篇》
《开店大全-东南亚篇》
《CD平台自注册指南》
《开店大全-俄罗斯篇》
通过ESG入驻平台,您将解锁
绿色通道,更高的入驻成功率
专业1v1客户经理服务
运营实操指导
运营提效资源福利
平台官方专属优惠

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

订阅
联系顾问

平台顾问

平台顾问 平台顾问

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

icon icon

小程序

微信小程序

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

icon icon

返回顶部