|
@@ -75,9 +75,57 @@ namespace TEAMModelOS.SDK.DI
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 取得Blob Container SAS (有效期預設一天)
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="containerName">容器名稱</param>
|
|
|
+ /// <param name="blobName"></param>
|
|
|
+ /// <param name="blobContainerSasPermissions"></param>
|
|
|
+ /// <param name="name"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public (string uri ,string sas) GetBlobContainerSAS(string containerName, BlobContainerSasPermissions blobContainerSasPermissions, string name = "Default")
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ var keys = Utils.ParseConnectionString(_optionsMonitor.Get(name).StorageAccountConnectionString);
|
|
|
+ var accountname = keys["AccountName"];
|
|
|
+ var accountkey = keys["AccountKey"];
|
|
|
+ var endpoint = keys["EndpointSuffix"];
|
|
|
+
|
|
|
+ var blobSasBuilder = new BlobSasBuilder
|
|
|
+ {
|
|
|
+ StartsOn = DateTimeOffset.UtcNow.Subtract(new TimeSpan(0, 15, 0)),
|
|
|
+ ExpiresOn = DateTimeOffset.UtcNow.Add(new TimeSpan(1, 0, 15, 0)),
|
|
|
+ BlobContainerName = containerName
|
|
|
+ };
|
|
|
+
|
|
|
+ blobSasBuilder.SetPermissions(blobContainerSasPermissions);
|
|
|
+ var sskc = new StorageSharedKeyCredential(accountname, accountkey);
|
|
|
+ BlobSasQueryParameters sasQueryParameters = blobSasBuilder.ToSasQueryParameters(sskc);
|
|
|
+ UriBuilder fullUri = new UriBuilder()
|
|
|
+ {
|
|
|
+ Scheme = "https",
|
|
|
+ Host = $"{accountname}.blob.{endpoint}",
|
|
|
+ Path = containerName
|
|
|
+ //Query = sasQueryParameters.ToString()
|
|
|
+ };
|
|
|
+
|
|
|
+ return (fullUri.Uri.ToString(), sasQueryParameters.ToString());
|
|
|
+ }
|
|
|
+ catch
|
|
|
+ {
|
|
|
+ return (null, null);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 取得Blob SAS (有效期預設一天)
|
|
|
- /// </summary>
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="containerName">容器名稱</param>
|
|
|
+ /// <param name="blobName"></param>
|
|
|
+ /// <param name="blobSasPermissions"></param>
|
|
|
+ /// <param name="name"></param>
|
|
|
+ /// <returns></returns>
|
|
|
public string GetBlobSAS(string containerName, string blobName, BlobSasPermissions blobSasPermissions, string name = "Default")
|
|
|
{
|
|
|
try
|
|
@@ -91,7 +139,8 @@ namespace TEAMModelOS.SDK.DI
|
|
|
{
|
|
|
StartsOn = DateTimeOffset.UtcNow.Subtract(new TimeSpan(0, 15, 0)),
|
|
|
ExpiresOn = DateTimeOffset.UtcNow.Add(new TimeSpan(1, 0, 15, 0)),
|
|
|
- BlobContainerName = containerName
|
|
|
+ BlobContainerName = containerName,
|
|
|
+ BlobName = blobName
|
|
|
};
|
|
|
|
|
|
blobSasBuilder.SetPermissions(blobSasPermissions);
|
|
@@ -101,11 +150,11 @@ namespace TEAMModelOS.SDK.DI
|
|
|
{
|
|
|
Scheme = "https",
|
|
|
Host = $"{accountname}.blob.{endpoint}",
|
|
|
- Path = blobName,
|
|
|
+ Path = $"{containerName}/{blobName}",
|
|
|
Query = sasQueryParameters.ToString()
|
|
|
};
|
|
|
|
|
|
- return sasQueryParameters.ToString();
|
|
|
+ return fullUri.Uri.ToString();
|
|
|
}
|
|
|
catch
|
|
|
{
|