将预格式化的 Base64 从 SQL 拉入 C# 时出现问题

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

我的任务是将 Base64 编码的图像数据从 SQL Server 数据库提取到 C# (Blazor Server .NET 8) 应用程序中,并将图像嵌入到

<a>
元素的
html
中。

我已经反对将

base64
作为存储图像的方法,我们的数据基础设施人员表示它不会改变......

base64 字符串的 SQL Server 列类型是

VARCHAR(MAX)
。我遇到的问题与通过 .NET 后端中的
SELECT
执行
Microsoft.Data.SqlClient
查询时的编码有关。

我在查询数据库时得到的字符串直接将图像完美地呈现为

src
元素中的
img
属性,但我从 C# 中的查询执行中接收到的字符串却不是。我尝试通过base64.guru的解码工具(
c# sql-server encoding base64 byte-order-mark
1个回答
0
投票

此类问题有多种可能性......

  • Base64 本身有许多不同的规则集/约定(围绕终止、分隔符和“字符 62 和 63”):Wikipedia

  • 文本编码/解码和字节顺序标记 BOM:到 .Net Framework 3.5

    string.Trim()
    会将 BOM 识别为空格并将其删除,但从 Fx4 开始,您需要自己识别编码,通过与(类似于)
    string bomUtf8 = Encoding.UTF8.GetString(Encoding.UTF8.GetPreamble());
    和类似的
    bomUtf16... Unicode.GetPreamble()
    并明确修剪。

  • 鉴于您的图像数据是使用 VARCHAR 存储的,您能否确定写入数据的系统的约定?如果没有,您可能需要编写一些搜索替换代码才能在所有情况下在 C# 中正常工作。

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