Azure Storage 系列(三)Blob 参数设置说明,azure ad介绍Azure Storage 系列(三)Blob 参数设置说明一,引言上一篇将Azure Blob存储的时候,有使用到一个.NET Core Web项目,通过代码的方式进行操作Azure 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版权:转载请在文章明显位置注明作者及出处。如发现错误,欢迎批评指正。
特别声明:以上文章内容仅代表作者本人观点,不代表ESG跨境电商观点或立场。如有关于作品内容、版权或其它问题请于作品发表后的30日内与ESG跨境电商联系。
二维码加载中...
使用微信扫一扫登录
使用账号密码登录
平台顾问
微信扫一扫
马上联系在线顾问
小程序
ESG跨境小程序
手机入驻更便捷
返回顶部