如何在JavaScript中使用Base64String值设置Dynamics CRM / 365字段

时间:2018-07-02 09:51:41

标签: javascript dynamics-crm dynamics-365

我想用文档的基数64字符串值设置“ base64string”,然后稍后再使用该值并将文档加载到sharepoint(我已经有了通过控制台应用程序进行操作的C#代码)。

下面的我的代码似乎不起作用,基本上从不设置该值,base64string字段是一个包含100万个字符的多行。

<html>
<head>
  <meta charset="utf-8">
</head>
<body>
  Please select a file and then hit Evaluate:
  <br/>
  <input id="file" type="file" />
  <button id="button">Upload        
    <script>           
      document.getElementById('button').addEventListener('click', function() {
        var files = document.getElementById('file').files;
        if (files.length > 0) {
          getBase64(files[0]);
        }
      });

      function getBase64(file) {
        var reader = new FileReader();
        reader.readAsDataURL(file);
        reader.onload = function () {        
          Xrm.Page.getAttribute("base64string").setValue(reader.result);
        };
        reader.onerror = function (error) {};
      }        
    </script>      
</body>
</html>

1 个答案:

答案 0 :(得分:2)

Xrm.Page.getAttribute("base64string")中,您确定base64string是字段名称吗?如果它是一个自定义字段,则应使用诸如abc_base64string之类的前缀。

此外,HTML Web资源无法直接访问Xrm.Page

Reference other web resources from an HTML web resource

  

添加到表单的HTML Web资源不能使用定义的全局对象   由JavaScript库中的表格加载。 HTML Web资源可能   与表单中的 Xrm.Page Xrm.Utility 对象进行交互   使用 parent.Xrm.Page parent.Xrm.Utility ,但使用全局对象   表单脚本定义的内容将无法使用父级进行访问。

我相信您的代码应该更像这样:

reader.onload = function () {        
    parent.Xrm.Page.getAttribute("abc_base64string").setValue(reader.result);
};