微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JavaScript通过ajax请求下载Blob类型文件XMLHttpRequest

1.post请求导出文件

exportFile = function(params, url) {
    let xhr = new XMLHttpRequest();
    xhr.open('POST', url, true);
    xhr.setRequestHeader('Content-Type', 'application/json;charset=utf-8');
    xhr.responseType = "blob";  // 返回类型blob
    xhr.send(JSON.stringify(params));   // 发送ajax请求
    xhr.onreadystatechange = function () {
        // 监听属性xhr.readyState每次变化时会触发
        if (xhr.readyState === XMLHttpRequest.DONE) {
            // 响应已返回
            var code = decodeURI(xhr.getResponseHeader("code"));
            console.log(code);
            if (code.toString() === "0") {
                $.messager.alert('提示', "操作成功!");
                // 截取文件名,这里是后端返回了文件名+后缀,如果没有可以自己拼接
                var fileName = decodeURI(xhr.getResponseHeader("content-disposition").split(";")[1].split("=")[1]);
                console.log(fileName);
                // 将`blob`对象转化成一个可访问的`url`
                let dataUrl = window.URL.createObjectURL(new Blob([xhr.response]));
                let link = document.createElement("a");
                link.style.display = "none";
                link.href = dataUrl;
                link.setAttribute("download", fileName);
                document.body.appendChild(link);
                link.click();
                document.body.removeChild(link);
            } else {
                var msg = decodeURI(xhr.getResponseHeader("msg"));
                $.messager.alert('提示', msg);
            }
        }
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐