簡體   English   中英

CRM Dynamics:將arraybuffer傳遞給html Web資源

[英]CRM Dynamics:To pass arraybuffer to html web ressource

首先,我正在開發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();
        }

假設Microsoft不支持“ document.createElement”,我發現了另一個解決方案,即使用保存下載內容的HTML頁面。

該文件是一個arraybuffer,所以我不能將其傳遞給函數:

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

因為customParameters不能僅存儲字符串。

你有什么想法要實現嗎?

由你處置

薩德

好的,這里是解決方案,我發現我們可以將arraybuffer轉換為字符串,反之亦然。

/**
 * 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);
}

有關信息,如果arraybuffer太長,它將不起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM