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('下载失败');
                        }
                    };

  

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM