CRM Dynamics:To 将 arraybuffer 传递给 html 网络资源
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 页面。
该文件是一个数组缓冲区,所以我不能将它传递给函数:
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太长,它不会工作。
首先,我正在使用 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 页面。
该文件是一个数组缓冲区,所以我不能将它传递给函数:
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太长,它不会工作。