JavaScript 文件流转 blob对象

时间:2025-03-28 09:39:15
var paramData = {'params': '参数'}; var xhr = new XMLHttpRequest(); var url = 'https://ip:port'; // 例如: https://10.103.20.11/dynamicModel/exportModel xhr.open('POST', url, true); // 设置请求头参数,可以添加token值 xhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8'); // 设置响应体返回类型,这里需要把返回的文件流转换成 blob 类型 xhr.responseType = 'blob'; xhr.onload = function (e) { if (this.status == 200) { // 这里从 响应头里面取出 文件名称,根据实际情况操作 var name = xhr.getResponseHeader('Content-disposition'); name = decodeURIComponent(name); // 这里对文件名进行操作,是根据实际情况操作的 var fileName = name.substring(20, name.length); // 返回的文件流,转换成blob对象 var blob = new Blob([xhr.response]); // 转换成blob类型的url var blobUrl = URL.createObjectURL(blob); // 模拟 a 标签进行下载 var eLink = document.createElement('a'); // 设置 a 标签的展示方式,默认 display:none eLink.style.display = 'none'; // 设置 a 标签的 url eLink.href = blobUrl; // 设置 下载文件的文件名称 eLink.download = fileName; document.body.appendChild(eLink); eLink.click(); document.body.removeChild(eLink); } }; // 此处 () 是项目中需要,可根据实际情况进行转换 xhr.send(JSON.stringify(paramData));