Java教程

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

本文主要是介绍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);
            }
        }
    }
}
这篇关于JavaScript通过ajax请求下载Blob类型文件(XMLHttpRequest)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!