无法使用 Azure Function Blob 触发器获取 Blob SAS URL

Unable to get Blob SAS URL using Azure Function Blob trigger

我正在使用 Blob 触发器 Azure 函数在任何文件上传到容器时获取 Blob 文件数据。

 public static void Run(Stream myBlob,string BlobTrigger,System.Uri uri, string name, ILogger log)
{
    log.LogInformation($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes + URL: {uri}");
}

使用上面的方法,我可以得到上传的项目的URL。 目前,上述代码是使用 Azure 提供的 Develop in Portal 选项生成的。

有什么方法可以获取已上传的 Blob 文件的 SAS URL

从我们这边转载后。这是我每次上传 blob 时如何实现的。

using System;
using System.IO;
using Azure.Storage;
using Azure.Storage.Blobs;
using Azure.Storage.Sas;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Extensions.Logging;

namespace FunctionApp10
{
    public static class Function1
    {
        [FunctionName("Function1")]
        public static void Run([BlobTrigger("samples-workitems/{name}", Connection = "ConnectionStore")]Stream myBlob, Uri uri, string name, ILogger log)
        {
            log.LogInformation($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes");
            BlobSasBuilder blobSasBuilder = new BlobSasBuilder()
            {
                BlobContainerName = "<YOURCONTAINERNAME>",
                BlobName = name,
                ExpiresOn = DateTime.UtcNow.AddMinutes(5),
            };
            blobSasBuilder.SetPermissions(BlobSasPermissions.All);
            string accountName = "<YOURACCOUNTNAME>";
            string accountKey = "<YOURACCOUNTKEY>";
            var sasToken = blobSasBuilder.ToSasQueryParameters(new StorageSharedKeyCredential(accountName, accountKey)).ToString();
            var sasUrl = uri.AbsoluteUri + "?" + sasToken;
            Console.WriteLine(sasUrl);
        }
    }
}

结果:

在存储帐户中

参考资料: