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

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

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

Azure Storage 系列(二) .NET Core Web 项目中操作 Blob 存储,azure ai配音Azure Storage 系列(二) .NET Core Web 项目中操作 Blob 存储一,引言上一篇文章,我们介绍到在实际项目中系统会产生大量的日志文件,用户上传的头像等等,同时也介绍到可以使用A......

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




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


文章推荐
Google Adsense、Admob、Youtube国内电汇及西联收款攻略,google adsense 如何收外汇
AppGallery Connect联运服务通用问题解答,huawei appgallery
Google AdMob账号注册及收款指南(新手必看),googleadmob教学视频
Azure 云服务的概述,azure 云服务


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

搜索 放大镜
韩国平台交流群
加入
韩国平台交流群
扫码进群
欧洲多平台交流群
加入
欧洲多平台交流群
扫码进群
美国卖家交流群
加入
美国卖家交流群
扫码进群
ESG跨境专属福利分享群
加入
ESG跨境专属福利分享群
扫码进群
拉美电商交流群
加入
拉美电商交流群
扫码进群
亚马逊跨境增长交流群
加入
亚马逊跨境增长交流群
扫码进群
《开店大全-全球合集》
《开店大全-主流平台篇》
《开店大全-东南亚篇》
《CD平台自注册指南》
《开店大全-俄罗斯篇》
《韩国站内推广指南》
《韩国热销品预测》
《开店大全-日韩篇》
《开店大全-拉美篇》
《开店大全-欧洲篇》
通过ESG入驻平台,您将解锁
绿色通道,更高的入驻成功率
专业1v1客户经理服务
运营实操指导
运营提效资源福利
平台官方专属优惠
联系顾问

平台顾问

平台顾问 平台顾问

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

icon icon

小程序

微信小程序

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

icon icon

返回顶部