Azure Storage 系列(三)Blob 參數(shù)設(shè)置說(shuō)明,azure blob 性能Azure Storage 系列(三)Blob 參數(shù)設(shè)置說(shuō)明一,引言上一篇將Azure Blob存儲(chǔ)的時(shí)候,有使用到一個(gè).NET Core Web項(xiàng)目,通過(guò)代碼的方式進(jìn)行操作Azure Blob的數(shù)據(jù),接著上一篇的內(nèi)容,今天繼續(xù)看一......
一,引言
上一篇將Azure Blob存儲(chǔ)的時(shí)候,有使用到一個(gè).NET Core Web項(xiàng)目,通過(guò)代碼的方式進(jìn)行操作Azure Blob的數(shù)據(jù),接著上一篇的內(nèi)容,今天繼續(xù)看一下代碼,具體看看Azure.Storage中的類,方法。
我是分割線
Azure Blob Storage存儲(chǔ)系列:
1,Azure Storage系列(一)入門簡(jiǎn)介
2,Azure Storage系列(二).NET Core Web項(xiàng)目中操作Blob存儲(chǔ)
3,Azure Storage系列(三)Blob參數(shù)設(shè)置說(shuō)明
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存儲(chǔ)帳戶提出請(qǐng)求時(shí),使用訪問(wèn)密鑰對(duì)應(yīng)用程序進(jìn)行身份驗(yàn)證。請(qǐng)采用安全的方式(例如使用Azure Key Vault)保存訪問(wèn)密鑰,不要共享密鑰。建議定期重新生成訪問(wèn)密鑰。
Azure會(huì)向我們提供兩個(gè)訪問(wèn)密鑰,這樣,當(dāng)重新生成其中一個(gè)時(shí),可以使用另一個(gè)保持連接。
2,注入BlobServiceClient,BlobService
services.AddSingleton(x=newBlobServiceClient(Configuration.GetValuestring(AzureBlobStorageConnectionString)));初始化創(chuàng)建一個(gè)BlobService類,并且在將appsettings中的key叫”AzureBlobStorageConnection“的鏈接字符串的值當(dāng)作參數(shù)放到構(gòu)造函數(shù)中
BlobService
services.AddSingletonIBlobSergvice,BlobService();3,BlobService方法
3.1,獲取Blog信息
#region 01,獲取Blob,根據(jù)blob名稱+async TaskBlobInfo GetBlobAsync(string name)
/// summary
/// 獲取Blob,根據(jù)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存儲(chǔ)信息具體實(shí)現(xiàn)方法,
1,首先我們可以看到先通過(guò)picturecontainer名稱獲取到ContainerClient,再通過(guò)需要的Blob名稱獲取到BlobClient
2,其次,通過(guò)異步的方法“DownloadAsync”進(jìn)行下載Blob對(duì)象,其中包括Blob元數(shù)據(jù),屬性等信息
3,最后,我們將返回創(chuàng)建BlobInfo對(duì)象,在其構(gòu)造函數(shù)中傳入返回值的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存儲(chǔ)信息具體實(shí)現(xiàn)方法,
1,首先我們可以看到先通過(guò)picturecontainer名稱獲取到ContainerClient,再通過(guò)需要的Blob名稱獲取到BlobClient
2,其次,通過(guò)異步foreach調(diào)用ContainerClient的GetBlobsAsync“的方法,當(dāng)前方法有多個(gè)默認(rèn)參數(shù)
BlobTraits(Blob特性):默認(rèn)獲取包含所有特性的標(biāo)識(shí)
BlobStates(Blob狀態(tài)):指定應(yīng)包含所有狀態(tài)的Blob的標(biāo)志
prefix(前綴):指定一個(gè)字符串,該字符串對(duì)結(jié)果進(jìn)行過(guò)濾以僅返回其名稱以指定的開頭的Blob前綴
cancellationToken:傳播有關(guān)應(yīng)取消操作的通知
3,最后,將每一項(xiàng)的Blob的名稱添加到集合中。
3.3,根據(jù)文件路徑和文件名稱上傳文件
#region 03,上傳文件,根據(jù)文件路徑和文件名稱+async Task UploadFileBlobAsync(string filePath, string filename)
/// summary
/// 上傳文件,根據(jù)文件路徑和文件名稱
/// /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數(shù)據(jù)具體實(shí)現(xiàn)方法
1,首先我們可以看到先通過(guò)picturecontainer名稱獲取到ContainerClient,再通過(guò)需要的Blob名稱獲取到BlobClient
2,最后通過(guò)異步上傳文件,此時(shí)需要指定文件的路徑,以及在BlobHttpHeaders中指定文件內(nèi)容的ContentType
3.4,上傳流
#region 04,上傳文件流,根據(jù)文件內(nèi)容和文件名稱+async Task UploadContentBlobAsync(string content, string filename)
/// summary
/// 上傳文件流,根據(jù)文件內(nèi)容和文件名稱
/// /summary
/// param name=content文件內(nèi)容/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數(shù)據(jù)具體實(shí)現(xiàn)方法
1,首先我們可以看到先通過(guò)picturecontainer名稱獲取到ContainerClient,再通過(guò)需要的Blob名稱獲取到BlobClient
2,其次,將上傳的字符串轉(zhuǎn)化成字節(jié)流
3,最后通過(guò)異步字節(jié)流上傳,以及在BlobHttpHeaders中指定文件內(nèi)容的ContentType
3.5刪除Blob數(shù)據(jù)
#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具體實(shí)現(xiàn)方法
1,首先我們可以看到先通過(guò)picturecontainer名稱獲取到ContainerClient,再通過(guò)需要的Blob名稱獲取到BlobClient
2,最后調(diào)用異步”DeleteIfExistsAsync“方法,將blob進(jìn)行刪除
ok,具體針對(duì)于Blob的增刪查的方法就介紹完成
三,結(jié)尾
今天內(nèi)容較少,只是把上一篇關(guān)于Blob操作的一些方法貼了出來(lái),講了一下對(duì)于Blob的操作,大家也可以通過(guò)微軟官方文檔:Azure Storage Blobs。下一篇將開始新的介紹Storage的新內(nèi)容Azure Table Storage
github:https://github.com/yunqian44/Azure.Storage.git
作者:Allen
版權(quán):轉(zhuǎn)載請(qǐng)?jiān)谖恼旅黠@位置注明作者及出處。如發(fā)現(xiàn)錯(cuò)誤,歡迎批評(píng)指正。
作者:Allen版權(quán):轉(zhuǎn)載請(qǐng)?jiān)谖恼旅黠@位置注明作者及出處。如發(fā)現(xiàn)錯(cuò)誤,歡迎批評(píng)指正。
特別聲明:以上文章內(nèi)容僅代表作者本人觀點(diǎn),不代表ESG跨境電商觀點(diǎn)或立場(chǎng)。如有關(guān)于作品內(nèi)容、版權(quán)或其它問(wèn)題請(qǐng)于作品發(fā)表后的30日內(nèi)與ESG跨境電商聯(lián)系。
二維碼加載中...
使用微信掃一掃登錄
使用賬號(hào)密碼登錄
平臺(tái)顧問(wèn)
微信掃一掃
馬上聯(lián)系在線顧問(wèn)
小程序
ESG跨境小程序
手機(jī)入駐更便捷
返回頂部