Azure Storage 系列(三)Blob 參數設置說明,azure blob 性能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跨境小程序
手機入駐更便捷
返回頂部