在 PowerApps 门户中显示 Dataverse 图像

问题描述

我正在尝试在 PowerApps 门户中显示来自 Dataverse 的图像属性。我知道文档说这不受官方支持我看过一些非官方指南,例如 https://www.itaintboring.com/powerapps/lets-show-an-image-on-the-power-apps-portal-form-too/,这似乎很有希望。

我对该解决方案的唯一问题是它需要门户中的硬编码 URL,这对我们不起作用,因为我们有一个包含多个环境的 CD 管道。 有没有另一种方法可以做到这一点?或者我可以以某种方式查询 URL 而不是对其进行硬编码?

解决方法

我没有足够的声誉来添加评论,所以我将其发布为答案。

  1. 您可以检索支持的 image_url 列值。 URL 存储在支持的 imageColumn_url 列中。 完整的 URL 应该类似于 {organization_URL}/image/download.aspx?entity={table_name}&attribute={column_name}&id={entityImageId}&timestamp={image_timestamp} 并且可以用作 img 标签中的 src。

  2. 在img标签中设置data-entityimage为图片列。在窗口加载时将实体图像转换为 base64 源。

     <img data-entityimage="{{ imageColumn | join: ',' }}"  />
    

    函数 toBase64(str) { if (!str) 返回空值; var uarr = new Uint8Array(str.split(',').map(function (x) { return parseInt(x); })); 返回 btoa(String.fromCharCode.apply(null,uarr)); }

     window.addEventListener('load',function () {
        document.querySelectorAll('img[data-entityimage]').forEach(function (img) {
            var data = img.dataset && img.dataset.entityimage;
            var base64data = data ? toBase64(data) : null;
            if (base64data) {
               img.src = 'data:image/jpeg;base64,' + base64data;
            }
       });
     });
    

使用 (1) 检索全尺寸图像,使用 (2) 存储在 cds 中的缩略图