文件下载一个字节数组作为一个文件在javascript / Extjs

在我的Ext Js解决方案中,我正在调用一个返回 JSON格式的服务
{"success":true,"filename":"spreadsheet.xlsx","file":[80,75,3,4,20,...(many more)]}

如何使用文件名和字节数组(文件)的内容进行文件下载对话?

UPDATE

所以我发现这一点开始downlaod

var a = window.document.createElement('a');
                    a.href = window.URL.createObjectURL(new Blob(data.file,{ type: 'application/octet-stream' }));
                    a.download = data.filename;

                    // Append anchor to body.
                    document.body.appendChild(a)
                    a.click();

                    // Remove anchor from body
                    document.body.removeChild(a)

到目前为止好

但是我得到的文件被损坏,所以我怀疑我需要编码/解码文件变量?

解决方法

我将文件转换成Uint8Array,然后将其传递给Blob
var arr = data.file;
var byteArray = new Uint8Array(arr);
var a = window.document.createElement('a');

a.href = window.URL.createObjectURL(new Blob([byteArray],{ type: 'application/octet-stream' }));
a.download = data.filename;

// Append anchor to body.
document.body.appendChild(a)
a.click();


// Remove anchor from body
document.body.removeChild(a)

阅读这个答案帮助了很多https://stackoverflow.com/a/16245768/1016439

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...