egg服务端传输文件流到浏览器下载,当文件流达到2M时 chrome 直接提示下载失败-网络错误

对着背影说爱祢 提交于 2019-12-05 04:48:00

 

 之前的代码 使用FileReader  读取流文件  会受到chrome浏览器的文件传输的大小限制;

 

现在改为 

URL.createObjectURL 方法导出 不受chrome浏览器文件传输限制
 
                let xhr = new XMLHttpRequest();
                    xhr.open("GET", url, true); // 也可以使用POST方式,根据接口
                    xhr.responseType = "blob"; // 返回类型blob,XMLHttpRequest支持二进制流类型
                    xhr.onload = function() {
                        if (this.status === 200) {  
                            let blob = this.response; //使用response作为返回,而非responseText
                            const objectURL = URL.createObjectURL(new Blob([blob], { type: 'text/xls' })) // chrome不受文件你大小限制导出文件
                            // let reader = new FileReader();
                            // reader.readAsDataURL(blob); // 转换为base64,可以直接放入a标签href
                            // objectURL.onload = function(e) {
                            // 转换完成,创建一个a标签用于下载
                            let a = document.createElement("a");
                            a.download = "xxxxxx.xlsx";
                            a.href = objectURL
                            a.click();
                            layer.msg('下载成功');
                            // };
                        } else {
                            layer.msg('下载失败');
                        }
                    };

  

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!