You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让SharePoint多行文本存储的Base64图片在PowerApps正常显示

问题成因
  • SharePoint字段自动转义:如果存储Base64的SharePoint多行文本字段设置为「富文本」或「增强型富文本」模式,SharePoint会自动将Base64中的特殊字符(+、/、=等)转义为HTML实体编码。手动复制时浏览器会自动将编码还原为原始字符,因此粘贴到图片控件可以正常显示;但通过LookUp函数拉取到的是未还原的编码后文本,不符合Base64图片的格式要求,无法渲染。
  • JSON输出的额外引号未处理:JSON(penFullMapDrawing.Image, JSONFormat.IncludeBinaryData)的返回结果默认自带前后双引号,如果你Patch时没有去除这对引号直接存入字段,Power Apps从SharePoint拉取数据时会自动将外层双引号识别为字符串边界,导致实际传入图片控件的内容缺失前后引号,或出现双重转义的双引号,破坏了data:image/png;base64,xxx的标准格式。
解决方案
  1. 调整SharePoint字段配置
    进入对应SharePoint列表的设置页面,将存储Base64的多行文本字段的类型修改为纯文本,关闭富文本自动转义逻辑。

  2. 修正Patch写入逻辑
    写入数据时先去除JSON输出的前后双引号再存入字段,公式调整如下:

Patch(
    你的SharePoint列表名称,
    目标更新条目,
    {
        对应多行文本字段名: Mid(JSON(penFullMapDrawing.Image, JSONFormat.IncludeBinaryData), 2, Len(JSON(penFullMapDrawing.Image, JSONFormat.IncludeBinaryData)) - 2)
    }
)

这里通过Mid函数去掉JSON返回结果的首尾双引号,保证存入SharePoint的是无额外格式的干净Base64字符串。

  1. 历史数据兼容处理
    如果已有大量历史数据存入、不便修改写入逻辑,可直接在图片控件的Image属性中添加转义还原、去引号的处理逻辑:
// 先还原HTML实体编码,再处理额外引号
With(
    {RawBase64: Substitute(Substitute(Substitute(Trim(LookUp返回的Base64字段值), "+", "+"), "/", "/"), "=", "=")},
    If(
        StartsWith(RawBase64, """") && EndsWith(RawBase64, """"),
        Mid(RawBase64, 2, Len(RawBase64) - 2),
        RawBase64
    )
)

内容的提问来源于stack exchange,提问作者Cade Weiskopf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 06:27:04