您的位置:首页 > 前端开发 > 技术笔记

ajax get方式下载文件

2018-02-01 13:44:36

通常我们采用下载的方法都是a标签指向一个文件地址,或者document.href="文件地址?a=xxx",但有时候下载文件时需要传header参数过去。

        function exportExcel() {
            var url = 'http://xx.com/export';
            var xhr = new XMLHttpRequest();
            xhr.open('GET', url, true);        // 也可以使用POST方式,根据接口
            //xhr.setRequestHeader("Authorization",cookie.get('usertoken'));
            xhr.responseType = "blob";    // 返回类型blob
            // 定义请求完成的处理函数,请求前也可以增加加载框/禁用下载按钮逻辑
            xhr.onload = function () {
                // 请求完成
                if (this.status === 200) {
                    // 返回200
                    var blob = this.response;
                    var reader = new FileReader();
                    reader.readAsDataURL(blob);    // 转换为base64,可以直接放入a表情href
                    reader.onload = function (e) {
                        // 转换完成,创建一个a标签用于下载
                        var a = document.createElement('a');
                        a.download = 'data.xlsx';
                        a.href = e.target.result;
                        $("body").append(a);    // 修复firefox中无法触发click
                        a.click();
                        $(a).remove();
                    }
                }
            };
            // 发送ajax请求
            xhr.send()
        }


more 最近