azure 我如何传递额外的参数到Blob触发器函数

e5nqia27  于 2023-03-19  发布在  其他
关注(0)|答案(1)|浏览(173)

我从网页发出包含2个参数的API请求,一个是文件本身,一个是用户提供的电子邮件字符串。我的API将文件上传到Azure Blob存储,然后我需要从那里触发Blob存储函数,该函数将信件发送到用户提供的电子邮件。我如何将电子邮件传递给该函数?

**Imortant:**我不能从API发送邮件。我的任务是使用函数发送邮件。

juud5qan

juud5qan1#

你有几个选择。
最简单的方法是将电子邮件地址存储为blob上的自定义元数据属性。请注意,由于电子邮件地址是个人信息,因此您需要确保存储帐户的安全。
在API中设置

public static async Task AddBlobMetadataAsync(BlobClient blob, string email)
{
    try
    {
        IDictionary<string, string> metadata =
           new Dictionary<string, string>();

        // Add metadata to the dictionary by using key/value syntax
        metadata["email"] = email;

        // Set the blob's metadata.
        await blob.SetMetadataAsync(metadata);
    }
    catch (RequestFailedException e)
    {
        // Error handling here
        throw;
    }
}

获取Blob触发的Azure函数。请注意,您必须在触发器绑定中使用BlobClient类型才能使用此函数。

private static async Task<string> GetBlobMetadataEmailAsync(BlobClient blob)
{
    try
    {
        // Get the blob properties
        BlobProperties properties = await blob.GetPropertiesAsync();

        
     if(properties.Metadata.ContainsKey("email")
    {
        return properties.Metadata["email"];
    }
    else
    {
        // Handle the case that it potentially doesn't 
    }

    }
    catch (RequestFailedException e)
    {
        // Exception handling here
        throw;
    }
}

或者,您可以考虑将电子邮件存储在Azure表存储或其他以blob名称为键的数据存储中,然后在blob触发的Azure函数中查找它。

相关问题