使用 blob 存储的 Azure AI 搜索 - 无法解决 Base64 解码问题

问题描述 投票:0回答:1

我成功使用 Azure AI 搜索指向位于 Azure 存储帐户内的存储容器。我的一切都按预期工作,数据源索引、索引器和技能集。

我无法解决的唯一问题(我花了很多时间寻找解决方案并尝试其他人推荐的各种修复,但没有解决问题)是我的

REST API
搜索端点成功返回结果。当我使用 Base64 解码站点手动解码 Base64 字符串时,它们会正确转换为指向 Azure 存储中的文件的有效 URL。这是以下 base64 字符串:

aHR0cHM6Ly9yZG1jMDFkZXZhenVyZXNlYXJjaHNhLmJsb2IuY29yZS53aW5kb3dzLm5ldC9yZG1jMDEtZGV2LWRvY3MvMTAucG5n0

这里是手动解码的:

https://rdmc01devazuresearchsa.blob.core.windows.net/rdmc01-dev-docs/10.png

以下是完整的 REST API 搜索结果:

    {
    "@odata.context": "https://rdmc01-dev-azure-search-service.search.windows.net/indexes('azureblob-index')/$metadata#docs(*)",
    "@odata.count": 4,
    "value": [
        {
            "@search.score": 8.4224205,
            "language": "English",
            "organizations": [
                "Microsoft",
                "Open source",
                "FEDORA",
                "Centos",
                "Linux Foundation"
            ],
            "metadata_storage_path": "aHR0cHM6Ly9yZG1jMDFkZXZhenVyZXNlYXJjaHNhLmJsb2IuY29yZS53aW5kb3dzLm5ldC9yZG1jMDEtZGV2LWRvY3MvMTYuZG9jeA2",
            "metadata_storage_name": "16.docx"
        },
        {
            "@search.score": 6.806098,
            "language": "English",
            "organizations": [],
            "metadata_storage_path": "aHR0cHM6Ly9yZG1jMDFkZXZhenVyZXNlYXJjaHNhLmJsb2IuY29yZS53aW5kb3dzLm5ldC9yZG1jMDEtZGV2LWRvY3MvMTAucG5n0",
            "metadata_storage_name": "10.png"
        },
        {
            "@search.score": 6.806098,
            "language": "English",
            "organizations": [],
            "metadata_storage_path": "aHR0cHM6Ly9yZG1jMDFkZXZhenVyZXNlYXJjaHNhLmJsb2IuY29yZS53aW5kb3dzLm5ldC9yZG1jMDEtZGV2LWRvY3MvbW9sbGllLnBuZw2",
            "metadata_storage_name": "mollie.png"
        },
        {
            "@search.score": 6.7477694,
            "language": "English",
            "organizations": [],
            "metadata_storage_path": "aHR0cHM6Ly9yZG1jMDFkZXZhenVyZXNlYXJjaHNhLmJsb2IuY29yZS53aW5kb3dzLm5ldC9yZG1jMDEtZGV2LWRvY3MvMTQuanBn0",
            "metadata_storage_name": "14.jpg"
        }
    ]
}

但是,当我使用 .NET C# 解码它们时,出现以下错误:

FormatException: The input is not a valid Base-64 string as it contains a 
non-base 64 character, more than two padding characters, 
or an illegal character among the padding characters.

任何帮助都会很棒,因为我已经没有想法了。

.net azure-ai-search
1个回答
0
投票

该错误是由于填充造成的。 base64的长度应该是4的倍数。

使用下面的示例代码:

using System;
using System.Text.RegularExpressions;
public class Program
{
    public static void Main()
    {
        string base64String = "aHR0cHM6Ly9yZG1jMDFkZXZhenVyZXNlYXJjaHNhLmJsb2IuY29yZS53aW5kb3dzLm5ldC9yZG1jMDEtZGV2LWRvY3MvbW9sbGllLnBuZw2";
        var rem = base64String.Length % 4;
        
        base64String += new string('=', 4 - rem);
        Console.WriteLine(base64String);
        Console.WriteLine(System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(base64String)));
    }
 
}

在此代码中,我添加了缺失的长度。

输出:

enter image description here

它适用于除

10.png
14.jpg
之外提供的所有文件路径,因为它们在此过程中的某个地方已损坏。

删除最后一个字符

0
可以解决两个文件的错误。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.