繁体   English   中英

具有 HTTP 触发器和 Blob 输入绑定的 Azure 函数 - 无法读取文件夹中的 JSON 文件。 可能的 blob 文件路径错误?

[英]Azure Function with HTTP Trigger and Blob Input Binding - can't read JSON files that are in a folder. Possible blob file path error?

我正在使用一个 Azure 函数,它有一个带有路由参数 {id} 的 HTTP 触发器,它是我要读取的 JSON 文件的 fileId。 我正在使用 Blob 输入绑定来绑定我的 JSON 文件的存储位置。 JSON 文件存储在一个名为“conversation”的容器中,然后存储在一个名为“Conversation”的文件夹中。 文件路径的示例是"https://<STORAGE_ACCOUNT_NAME>/conversations/Conversation/8da3d7ad3e35273-1aWpKU4rVghHiTaYkjOjVC-eu%7C0000000.json"

下面是我的代码。

public static class GetConvo
    {
        [FunctionName("GetConvo")]
        public static async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = "getConvo/{id}")] HttpRequest req,
            [Blob("conversations/{id}", FileAccess.Read, Connection = "AzureWebJobsStorage")] string json,
            ILogger log, string id)

        {
            
            log.LogInformation($"File name: {id}");

            if (json == null)
            {
                log.LogInformation($"File {id} not found");
                return new NotFoundResult();
            }
            else
            {
                log.LogInformation($"Content: {json}");
            }


            return new OkObjectResult(JsonConvert.DeserializeObject<Message>(json));

如果我将 JSON 文件移动到“Conversation”文件夹之外,上面的代码可以工作,我可以访问它并收到 200OK 代码。

在此处输入图像描述

我尝试将 Blob 输入绑定路径更改为“conversations/Conversation/{id}”,如下所示,但这会返回 404 代码。

[FunctionName("GetConvo")]
        public static async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = "getConvo/{id}")] HttpRequest req,
            [Blob("conversations/Conversation/{id}", FileAccess.Read, Connection = "AzureWebJobsStorage")] string json,
            ILogger log, string id)

这是一个blob输入路径问题吗?

如何使用 azure 函数读取 blob 容器中文件夹中的 JSON 文件?

@AjgB,是的,Blob 路径不正确。 您需要提供文件扩展名。

假设该文件直接放在您的“对话”文件夹中。 那么你的 BLOB 输入绑定应该是 -

[Blob("conversations/{id}.json", FileAccess.Read, Connection = "AzureWebJobsStorage")] string json

注意 blob 路径中的.json

我发现我的错误是什么。

Blob 输入路径正确。 这是一个 URL 编码问题:

https://<STORAGE_ACCOUNT_NAME>/conversations/Conversation/8da3d7ad3e35273-1aWpKU4rVghHiTaYkjOjVC-eu%7C0000000.json

%未被识别且需要; 25放在%之后解决了这个错误:

https://<STORAGE_ACCOUNT_NAME>/conversations/Conversation/8da3d7ad3e35273-1aWpKU4rVghHiTaYkjOjVC-eu%257C0000000.json

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM