Динамика CRM: для передачи массива в html-ресурс - PullRequest
0 голосов
/ 29 мая 2018

Прежде всего, я работаю над CRM Online 8.2

Я пытаюсь загрузить файл с помощью кнопки, используя этот код: сначала:

 xhr.onload = function (e) {
            var arraybuffer = xhr.response;
            var fileArray = new Uint8Array(arraybuffer);
 var file = fileArray.buffer.slice(fileStart, lastBoundary);

Затем:

 if (typeof window.navigator.msSaveBlob !== 'undefined') {

    window.navigator.msSaveBlob(blob, filename);
}
else {
    var blob = new Blob([file],
        {
            type: type
        });
    var URL = window.URL || window.webkitURL;
    var downloadUrl = URL.createObjectURL(blob);
    if (filename) {
        var a = document.createElement("a");
        if (typeof a.download === 'undefined') {
            window.location = downloadUrl;
        }
        else {
            a.href = downloadUrl;
            a.download = filename;
            document.body.appendChild(a);
            a.click();
        }

Предполагая, что «document.createElement» не поддерживается Microsoft, я нашел другое решение, использующее HTML-страницу, содержащую загрузку.

файл является буфером массива, поэтому я не могупередать его функции:

Xrm.Utility.openWebResource('Shared/Download',customParameters,300,300);

Поскольку customParameters не может только хранить строки.

Есть ли у вас какие-либо идеи для этого?

В вашем распоряжении

Саад

1 Ответ

0 голосов
/ 29 мая 2018

Хорошо, вот решение, я обнаружил, что мы можем преобразовать массив буферов в строку и наоборот.

/**
 * Convert an Uint8Array into a string.
 *
 * @returns {String}
 */
function Decodeuint8arr(uint8array){
    return new TextDecoder("utf-8").decode(uint8array);
}

/**
 * Convert a string into a Uint8Array.
 *
 * @returns {Uint8Array}
 */
function Encodeuint8arr(myString){
    return new TextEncoder("utf-8").encode(myString);
}

Для информации, если буфер массива слишком длинный, он не будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...