Azure Storage 系列(二) .NET Core Web 项目中操作 Blob 存储,azure blob stora
接下来我们通过代码进行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/returnspublic 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=FU01h022mn1JjONp+ta0DAXOO7ThK3dxxxxxxxxxxxxxxxxx891n9nycsTLGZF83nJpGvTIZvO5VCVxxxxxx0wndOOQ==;EndpointSuffix=core.windows.net}2.4,注入BlobService,BlobServiceClientservices.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完整代码BlobExplorerControllerIBlobSergvice接口类IBlobSergviceBlobService实现类BlobServiceUpLoadContentRequestUpLoadContentRequestUploadFileRequestUploadFileRequestFileExtensions扩展类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类中的方法,参数等今天的内容暂时不去解释。