[Azure] C# + Azure.Storage.Blobs v12 - 取得檔案下載位置並且限定下載時間

2020-12-30

這功能我會蠻常用到的,可以生成一個 Blob 上面的檔案聯結並且限定過期時間,這樣可以做出,譬如要給老闆的報表產好後放在 blob 上面,然後設定一個他會閱讀跟下載的時間之後自動過期,又不用處理 Email 夾檔問題,也不用特殊再去處理,或是跑排程砍掉,然後又可以留底在 azure 上面,開開心心~





前置步驟,首先你得安裝新版的 Azure.Storage.Blobs ( https://www.nuget.org/packages/Azure.Storage.Blobs ) 12.7.0 ,不要裝到舊版的,這邊我撰寫案例是用 .net core 3.1;在 Azure Portal  開一個 儲存體帳戶,並且在左側的存取金鑰中拿到 Connection String.



先說一下案例,這裡面我會針對 samplex.jpg 這檔案,產出聯結,並且我只能讓他可以被讀取 15 秒,請注意這裡面的時間都要用 UTC TIME。

直接看程式碼



result:

https://pixelf.blob.core.windows.net/test1/samplex.jpg?sv=2020-02-10&st=2020-12-30T06%3A37%3A55Z&se=2020-12-30T06%3A38%3A10Z&sr=b&sp=r&sig=W9DckcAZLrZ4qin6T%2FNeeNxRlMqd%2BvcZP50wLtfZXUo%3D


因為跟之前版本改動蠻多的,花了點時間理解新版套件如何調用 SAS ( Shared Access Signature ),跟之前比較起來邏輯簡單跟清楚,不過就是提到的文章比較少。就參考一下吧 :)


reference :
https://docs.microsoft.com/zh-tw/azure/storage/common/storage-sas-overview

https://docs.microsoft.com/zh-tw/azure/storage/blobs/sas-service-create?tabs=dotnet


當麻許的超技八 2014 | Donma Hsu Design.