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