时间:2021-07-15 | 标签: | 作者:Q8 | 来源:Allen网络
小提示:您能找到这篇{Azure Storage 系列(二) .NET Core Web 项目中操作 B}绝对不是偶然,我们能帮您找到潜在客户,解决您的困扰。如果您对本页介绍的Azure Storage 系列(二) .NET Core Web 项目中操作 B内容感兴趣,有相关需求意向欢迎拨打我们的服务热线,或留言咨询,我们将第一时间联系您! |
< ">一,引言 < font-size: 16px;">上一篇文章,我们介绍到在实际项目中系统会产生大量的日志文件,用户上传的头像等等,同时也介绍到可以使用Azure Blob Storage来存储项目中的一些日志文件,用户头像,用户视频等等。这个时候,有人就会问到,那我大概明白Blob可以存放什么类型的数据了,这个时候就有人问一些问题了 < font-size: 16px;">1,什么是Blob? < font-size: 16px;">答Azure Blob存储是非结构化的,它可以保存的数据类型是没有任何限制的。如,pdf文档,json文件,视频,txt文件等。我们常见的类型的文件,它统统可以进行存储。但是Blob不适合需要经常查询的危机公关能力有哪些方面结构化数据,比如说项目中使用的,它们具有比内存和本地磁盘更高的延迟,并且没有可让数据库高效运行查询的索引功能。但是,blob经常用与数据库一起用于存储不可查询的的数据,例如用户头像存储在Blob中,数据库中保存对应用户头像的Blob名称或URL(来自微软官方解释) < font-size: 16px;">其实用可以这么说,如果项目中有对于的图片资源,视频资源,文件等资源,我们就可以考虑到将这些数据都存储在Azure Blob中。今天在文章的后半段我们将通过一个简单的.NET Core Web程序去操作Blob存储对象。 < 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;">开始之前我们看看Blob的类型 < font-size: 16px;">1,block blob(块blob):由不同大小的块构成,在写入到块blob时,需要将数据上传到块并将其提交到blob。 < font-size: 16px;">2,append blob(追加blob):是专用的块blob,它仅支持追加新数据,追加操作非常高效。追加blob非常适用于存储日志或写入流数据等方案。 < font-size: 16px;">3,page blob(页blob):专用于涉及随机存取读写的方案。页blob用于存储Azure虚拟机所使用的虚拟硬腾讯社盘(VHD)文件,但它们非常适用于任何涉及到随机存取的方案。 < font-size: 16px;">今天我们演示的是block blob类似,实际项目中,我们是如何进行操作的 < font-size: 16px;">1,Azure Portal上进行创建blob数据 < font-size: 16px;">找到之前创建好的“cnbateblogaccount”Storage Account,点击图中圈起来的“Containers”,进行创建容器 < font-size: 16px;"> < font-size: 16px;">点击“+Container”,进行创建容器 < font-size: 16px;">注意:这里的容器,我们可以理解为用来存储对象的容器 < font-size: 16px;"> < font-size: 16px;">Name:“picturecontainer” < font-size: 16px;">Public access level选择:“Private(no anonymous access)”(私有的,不允许匿名访问) < font-size: 16px;">点击“Create" < font-size: 16px;"> < font-size: 16px;">创建完成后,我们就可以在当前容器页面看到自己创建的”picturecontainer“信息。 < font-size: 16px;"> < font-size: 16px;">我们点击容器进入,尝试在上传一张图片进行测试 < font-size: 16px;"> < font-size: 16px;">点击“Select a file”进行选择 < font-size: 16px;"> < font-size: 16px;">选择“background.jpg”,点击"打开" < font-size: 16px;"> < font-size: 16px;">勾选“Overwrite if file already exist”(如果文件存储,就覆盖) < font-size: 16px;">点击“Upload”进行上传 < font-size: 16px;"> < font-size: 16px;">我们可以看到上传的图片文件,并且它的Blob类型是“block blob” < font-size: 16px;"> < font-size: 16px;">同时,我们可以还有在Portal上进行预览,编辑操作。 < font-size: 16px;"> < font-size: 16px;">ok,上述操作我们是在Azure Portal上进行操作的。接下来我们通过代码进行blob的增删查 < font-size: 16px;">2,通过ASP.NET Core Web项目进行Blob数据操作 < font-size: 16px;">vs2019新建Web项目 < font-size: 16px;"> < font-size: 16px;"> < font-size: 16px;">2.1,首先得安装Azure.Storage相关的包 < font-size: 16px;">NuGet:Azure.Storage.Blobs < font-size: 16px;"> < font-size: 16px;">我们创建BlobExplorerController控制器 < font-size: 16px;"> [HttpGet("{BlobName}")] public async Task<IActionResult> GetBlob(string blobName) { var data = await _blobService.GetBlobAsync(blobName); return File(data.Content, data.ContentType); } < font-size: 16px;">2.2,创建IBlobService接口,和BlobService实现类,新增获取Blob的接口定义和具体实现方法 < font-size: 16px;"> Task<BlobInfo> GetBlobAsync(string name); #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;">创建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; } } < font-size: 16px;">2.3配置链接字符串 < font-size: 16px;">Azure Portal中找到创建的“cnbateaccount”的Azure Blob Atorage,点击“Setting=>Access key” < font-size: 16px;">复制图中的“Connection string” < font-size: 16px;"> < font-size: 16px;">将数据库链接字符串配置在项目的appsettings配置文件中 { "Logging": { "LogLevel": { "Default": "Information", ": "Warning", .Hosting.Lifetime": "Information" } }, "AllowedHosts": "*", "AzureBlobStorageConnectionString": "DefaultEndpointsProtocol=https;AccountName=cnbateblogaccount;AccountKey=FU01h022mn1 JjONp+ta0DAXOO7ThK3dxxxxxxxxxxxxxxxxx891n9nycsTLGZF83nJpGvTIZvO5VCVxxxxxx0wndOOQ==; EndpointSuffix=core.windows.net" } < font-size: 16px;">2.4,注入BlobService,BlobServiceClient < font-size: 16px;">services.AddSingleton(x=>new BlobServiceClient(Configuration.GetValue<string("AzureBlobStorageConnectionString"))); < font-size: 16px;">services.AddSingleton<IBlobSergvice,BlobService>(); < font-size: 16px;">Ok,我们启动项目进行测试 < font-size: 16px;">postman中输入:localhost:9001/Blobs/background.jpg,效果如下图所示: < font-size: 16px;"> < font-size: 16px;">浏览器访问:http://localhost:9001/Blobs/background.jpg,效果如下图所示: < font-size: 16px;">ok,成功,成功获取到之前在Portal上传的图片 < font-size: 16px;">2.5,完善对Blob数据的新增,删除操作 < font-size: 16px;">BlobExplorerController完整代码 < font-size: 16px;">BlobExplorerController < font-size: 16px;">IBlobSergvice接口类 < font-size: 16px;">IBlobSergvice < font-size: 16px;">BlobService实现类 < font-size: 16px;">BlobService < font-size: 16px;">UpLoadContentRequest < font-size: 16px;">UpLoadContentRequest < font-size: 16px;">UploadFileRequest < font-size: 16px;">UploadFileRequest < font-size: 16px;">FileExtensions扩展类 < font-size: 16px;">FileExtensions < font-size: 16px;">目前我们分别添加了上传图片接口,上传文件接口,删除文件接口 < font-size: 16px;">我们分别在postman中进行测试 < font-size: 16px;">(1)上传图片 < font-size: 16px;">FilePath(文件路径):”C:UsersadminDesktop2020904001.jpg“ < font-size: 16px;">FileName(文件名称):”2020904001.jpg“ < font-size: 16px;">点击”Send“,我们可以看到响应返回状态码(Status)”200 OK“ < font-size: 16px;"> < font-size: 16px;">同时在Portal上也可以看到刚刚选择的”20200904001.jpg“文件 < font-size: 16px;"> < font-size: 16px;"> < font-size: 16px;">这里注意一下,为什么我们制定文件的路径,和名称就可以上传文件,并且可以在浏览器中查看,那是因为我们在上传文件中设置文件的请求头的原因 private static readonly FileExtensionContentTypeProvider provider = new FileExtensionContentTypeProvider(); public static string GetContentType(this string fileName) { if (!provider.TryGetContentType(fileName, out var contentType)) { contentType = "application/octet-stream"; } 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() }); } < font-size: 16px;">(2)上传json文件 < font-size: 16px;">Content:"{"Name":"zhangsan","Reamrk":"This is work!!!"}" < font-size: 16px;">FileName:”log.json“ < font-size: 16px;">点击”Send“,上传Json文件 < font-size: 16px;"> < font-size: 16px;">我们继续在Portal上进行查看上传的json文件 < font-size: 16px;"> < font-size: 16px;"> < font-size: 16px;">(3)查看Blob信息 < font-size: 16px;"> < font-size: 16px;">接下来还是删除Blob数据的操作,我这里就不做演示了,大家可以自己调用接口进行测试 < font-size: 16px;">好的,那今天的内容就先到此结束,今天的目的只是通过简单的demo代码去演示如果操作Azure Blob数据,简单的跑跑代码,在.NET Core中的demo代码是怎么去写的,具体的Azure.Storage类中的方法,参数等今天的内容暂时不去解释。 < font-size: 16px;">鼓掌,撒花?????????? < font-size: 16px;">三,结尾 < font-size: 16px;">今天的文章大概介绍了在Portal上如何上传blob图片文件,以及写了一个简单的.NET 营销推广资讯Core demo程序,通过代码我们我们去控制Blob数据的增删改查,下一篇继续介绍Azure Storage在代码中的操作,也着重讲一下Azure.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 系列(一)入门简介
下一篇:PayPal通过派安盈(Payoneer)提现到国内(教程及费
基于对传统行业渠道的理解,对互联网行业的渠道我们可以下这样一个定义:一切...
小米应用商店的后台操作和苹果是比较相似的,因为都能填写100字符关键词,允许...
小米的规则目前是在变更中的,但是根据经验小米的搜索排名评分的高低是个很重...
为了恰饭,有时候是要接入一些广告的,所以FB也专门有一个广告的SDK,这就是A...
在 2018 年于旧金山举行的游戏开发者大会上,Amazon Web Services (AWS) 曾宣布,目前世...
关于Facebook Audience Network如何收款的问题,其实官方已经给了详细的步骤。本文主要...
本文介绍了Audience Network对广告载体的质量检查,以及它重点广告形式需要注意的问...
随着iOS开发,作为开发者或公司需要针对iOS App开发涉及的方方面面作出对应的信息...
Facebook和谷歌对出海企业广告渠道都很熟悉,但事实上,在国外还有一些渠道也很...
卖家从做号的第1分钟开始,就一定要想好变现路径是什么?一定要以变现为目的去...
小提示:您应该对本页介绍的“Azure Storage 系列(二) .NET Core Web 项目中操作 B”相关内容感兴趣,若您有相关需求欢迎拨打我们的服务热线或留言咨询,我们尽快与您联系沟通Azure Storage 系列(二) .NET Core Web 项目中操作 B的相关事宜。
关键词:Azure,Storage,系列(二),.