前端接收下载后端文件流

说明:
这里是接收excel流的示例,故属性为type: 'application/vnd.ms-excel',最重要的是responseType要设置为blob.
另外使用ajax是不行的,blob类型返回值无法解析,所以即使成功了也无法进入success回调。自己可以试一下,加深印象。

配套后端代码地址:hutool工具包实现的导出实体到excel功能

// 导出excel数据表
function exportExcel(url, param, fileName) {
    url = baseURL + url;
    var xhr = new XMLHttpRequest();
    xhr.open('POST', url, true);
    xhr.responseType = "blob";
    xhr.onload = function() {
        if (this.status === 200) {
            var blob = new Blob([this.response], {
                type: 'application/vnd.ms-excel'
            });
            var reader = new FileReader();
            reader.readAsDataURL(blob);
            reader.onload = function(e) {
                var a = document.createElement('a');
                a.download = fileName;
                a.href = URL.createObjectURL(blob);
                $('body').append(a);
                a.click();
            }
        } else {
            alert("下载失败");
        }
    };
    xhr.send(JSON.stringify(param));
}
posted @ 2020-07-18 17:40  Gyyyang  阅读(1692)  评论(0编辑  收藏  举报