Как установить поле Dynamics CRM / 365 со значением Base64String в JavaScript - PullRequest
0 голосов
/ 02 июля 2018

Я хочу установить "base64string" со строковым значением base 64 документа, затем я возьму это значение и загружу документ в sharepoint (у меня уже есть код c # для этой работы через консольное приложение).

Мой код ниже, похоже, не работает, в основном значение никогда не устанавливается, Поле base64string является многострочным и содержит 1 миллион символов.

<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 голосов
/ 02 июля 2018

В Xrm.Page.getAttribute("base64string") Вы уверены, что base64string является именем поля? Если это пользовательское поле, оно должно иметь префикс, такой как abc_base64string.

Кроме того, HTML-ресурс не может напрямую получить доступ к Xrm.Page.

Ссылка на другие веб-ресурсы с веб-ресурса HTML .

Веб-ресурс HTML, добавленный в форму, не может использовать определенные глобальные объекты библиотекой JavaScript, загруженной в форму. Веб-ресурс HTML может взаимодействовать с Xrm.Page или Xrm.Utility объектов в форме используя parent.Xrm.Page или parent.Xrm.Utility , но глобальные объекты определенные сценариями формы не будут доступны родителю.

Я полагаю, ваш код должен выглядеть примерно так:

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