首先來看一下Azure Blob storage服務種類, 可以分為底下四類, 本範例預計採用的是檔案這項服務
先點擊專案的Reference, 按下右鍵, 點選Add Connected Service如下
點選 Azure Storage, 按下Configure
按下Reenter your credentials登入Azure
登入成功之後, 會列出目前儲存體的清單, 按下Create a New Storage Account來新增一個新儲存體
在Name欄位填入名稱, 其他採預設選項, 然後按下Create
之後在列表就可以看到新的儲存體, 按下Add
之後開始跑進度條, 看到error, 心知不妙啊
跑完之後, 果然報錯, 看到error說不支援.NETCoreApp 1.0版
接著把心一橫, 把所有1.0都調成1.1, 不然就是調成最新的版本
調整之後, error是消失了, 但是出現了驚嘆號, 不過重新建置專案後, 沒有任何錯誤訊息, 就不管它了, 當作它應該沒問題
經過Add Connected Service這個步驟之後, 就會產生如下圖的目錄
接著參考底下這篇
https://docs.microsoft.com/en-us/azure/storage/vs-storage-aspnet5-getting-started-blobs
在AppController.cs, 試著加入上傳到Azure的函式, 但是遇到底下的叫用函式不存在的錯誤
接著找到這篇, 說是要安裝Microsoft.WindowsAzure.ConfigurationManager
https://amoghnatu.net/2016/10/04/resolving-cloudconfigurationmanager-does-not-exist-in-the-current-context-compiler-error/
於是在NuGet找到後安裝
結果一樣不支援.NETCoreApp 1.0版, 這時候有點小火了
結果搜尋了N篇, 找到這篇,
http://stackoverflow.com/questions/30575689/how-do-we-use-cloudconfigurationmanager-with-asp-net-5-json-configs
Microsoft大神 Scott Hanselman 說ASP.NET 5不用CloudConfigurationManager了, 什麼?不用了 不用了 不用了, 到這火上來了, 因為上述這篇, 用的就是ASP.NET 5, 而且文章發佈日是2016/12/2,
所以Microsoft的官方文件是在鬼打牆膩?還是已經過時了, 過時要更新啊, 讓人白做了半天工, 事已至此, 決定聽從Scott的建議, 也不用讀config的方式, 決定把Azure Storage連線資訊放在AppController.cs的靜態字串裡
打開config.json
在AppController.cs裡, 宣告一個靜態的字串放入在config.json找到的連線資訊
並加入Microsoft.WindowsAzure.Storage的參考
接著在AppController.cs裡, 加入上傳檔案到Azure的函式, 程式碼如下
在AppController.cs裡, 加入從Azure下載檔案的函式, 程式碼如下
修改FileUpload函式, 加入Azure上下傳功能, 並把從Azure的下載到本地端的連結丟回給前端的View
接著在wwwroot的目錄下新增azure的資料夾用來接收從Azure來的檔案
接著跑起來測試看看, 成功畫面如下
到Azure Portal檢查是否有成功上傳? 完成畫面如下
本文參考底下兩篇文章實作
https://docs.microsoft.com/en-us/azure/vs-azure-tools-connected-services-storage
https://docs.microsoft.com/zh-tw/azure/storage/vs-storage-aspnet5-getting-started-blobs
後記: 在實作的這篇的時候, 真的是寫到想翻桌, 被Microsoft官方文件給搞到, 彷彿掉到Rabbit hole.