簡體   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