Jep*_*zen 12 javascript extjs3
在我的Ext Js解决方案中,我正在调用一个返回此JSON格式的服务
{"success":true,"filename":"spreadsheet.xlsx","file":[80,75,3,4,20,0,...(many more)]}
Run Code Online (Sandbox Code Playgroud)
如何使用文件名和字节数组(文件)的内容创建文件下载对话框?
UPDATE
所以我发现这一点开始下载
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)
Run Code Online (Sandbox Code Playgroud)
到目前为止很好
但我得到的文件已损坏所以我怀疑我需要编码/解码文件变量?
Jep*_*zen 26
在将文件传递给Blob之前,我必须将文件转换为Uint8Array
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)
Run Code Online (Sandbox Code Playgroud)
阅读这个答案帮助了很多/sf/answers/1137203791/