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

 

 之前的代码 使用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('下载失败');
                        }
                    };

  

 

posted @ 2019-11-21 17:52  xiguachaodan  阅读(2111)  评论(0)    收藏  举报