10分鐘上手Azure Blob Storage

Azure Blob Storage快速上手

背景

  • 最近遇到了一個新需求, 就是要把存在Azure Blob Storage裏面的一些文件加上額外的屬性, 之前沒用過這個也是費了一上午搞明白一點, 下面簡單介紹下。

什麼是Azure Blob Storage?

  • 簡單來說就是存儲文本, 圖片, 視頻等非結構化數據的存儲服務. 詳情可以參考官方文檔或者這裏

Blob Storage的應用場景

  • 存儲圖片, 文檔, 視頻等數據並且提供可以訪問的鏈接
  • 用於cdn, 支持分佈式訪問
  • 文件備份
  • 音頻流/視頻流/文件流

環境搭建

  • 這裏我們簡單介紹下如何在本地搭建一套blob storage
  • 英文比較好的可以直接看官方文檔

安裝

  • 下載microsoftazurestorageemulator
  • 如果使用過mysql的朋友, 可以把這個理解爲mysql-server安裝, 反正我是這麼理解的 哈哈, 安裝完成後可以在win10搜索框中輸入Azure Storage Emulator, 不出意外應該能出現如下圖所示:
    在這裏插入圖片描述
  • 下載storage explorer
  • 這個可以理解爲navicat類似一個數據可視化的工具, 大家安裝完成後應該可以看到如下圖:
    在這裏插入圖片描述

運行

  • 打開我們前面安裝的Azure Storage Emulator, 不出意外電腦右下角會出現如下圖:
    在這裏插入圖片描述

  • 右鍵點擊會出現···兩個···需要start的東西, 我們都點擊start就行

    分別是computeEmulatorStorageEmulator

  • 我們可以右鍵圖標然後點擊Show Storage Emulator UI, 應該會出現下圖:
    在這裏插入圖片描述

  • 簡單介紹下命令的意思:

    AzureStorageEmulator.exe init            : 初始化數據庫和配置
    AzureStorageEmulator.exe start           : 開啓
    AzureStorageEmulator.exe stop            : 停止
    AzureStorageEmulator.exe status          : 查看當前狀態
    AzureStorageEmulator.exe clear           : 刪除所有數據
    AzureStorageEmulator.exe help [command]  : 幫助
  • 我們剛進去做兩件事就行
    • 初始化
    • 啓動
$ AzureStorageEmulator.exe init
$ AzureStorageEmulator.exe start
  • 以上操作之後我們基本把環境搭建好了, 如果出現了一些意外, 可以留言我或者接着往後看是不是和我遇到一樣的問題

修改Blob Storage中的數據

基本操作

  • 我們先創建一個container名字叫audios, 後面我們都會在這個container上操作, 如圖:
    在這裏插入圖片描述
  • 我們往裏面上傳幾首歌, 歌曲隨便找的
    在這裏插入圖片描述
  • 我們點擊歌曲右鍵查看屬性(properties), 圖中標紅字段就是我使用C#代碼添加進去的, 大家應該沒有, 下面介紹一下使用c#代碼操作blob storage的基本操作
    在這裏插入圖片描述

使用C#修改文件屬性

  • Nuget安裝Microsoft.Azure.Storage.Blob
  • 建立連接
	CloudStorageAccount storageAccount = CloudStorageAccount.Parse("UseDevelopmentStorage=true");
	CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
  • 獲取container對象
	CloudBlobContainer container = blobClient.GetContainerReference("audios");
	if (!container.Exists())
	{
	   Console.WriteLine("container:{0} not exist, exit...", "audios");
	   return;
	}
  • 添加屬性
  • 這裏我們添加一個類型爲happy的音樂
	CloudBlockBlob blob = container.GetBlockBlobReference("xxx.mp3");
	// 如果沒有這句話有可能會將之前已經添加的屬性給覆蓋掉
	blob.FetchAttributes();
	blob.Metadata.Add("type", "happy");
	blob.SetMetadata();
  • 查看添加結果, 如圖:
    在這裏插入圖片描述

遇到問題

初始化端口被佔用

  • 初始化時候我們需要三個端口10000, 10001, 10002, 下面展示下如果我們10000被佔用了該怎麼辦
  • 找出端口對應PID
$ netstat -ano | findstr 10000

在這裏插入圖片描述

  • 發現PID是4, 繼續用命令kill掉他
$ taskkill -PID 4 -F

C# Microsoft.Azure.Storage.Blob版本11.x部分功能不支持

  • 版本換爲如下
<PackageReference Include="Microsoft.Azure.Storage.Blob" Version="10.0.3" />

參考資料

[1] Azure Storage官網文檔
[2] Azure基礎: Blob Storage

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章