标签:web const req H5 xhr link blob let 下载
get请求是H5代码。可能会出现跨域问题,让服务端解决跨域问题,还有很多浏览器不支持,目前只有少数的几个浏览器支持下载
downFile (info) {
let url = info.downPath//文件下载地址
var xhr = new XMLHttpRequest();
xhr.open("get", url, true);
xhr.responseType = "blob";
xhr.onload = function () {
let blob = xhr.response
if (window.navigator.msSaveOrOpenBlob) {
navigator.msSaveBlob(blob, info.fileName)
} else {
let link = document.createElement('a')
let evt = document.createEvent('HTMLEvents')
evt.initEvent('click', false, false)
link.href = URL.createObjectURL(blob)
link.download = info.fileName
link.style.display = 'none'
document.body.appendChild(link)
link.click()
window.URL.revokeObjectURL(link.href)
}
};
xhr.send();
},
post请求是web端的,后端接口地址返回来的是文件流,没办法只能用这种方式,测试通过没问题
downOut () {
const env = process.env.VUE_APP_ENV
let url = config.baseUrl[env] + "Device/ExportDevice"//接口请求地址
const req = new XMLHttpRequest();
let formData = JSON.stringify(this.selectedRowKeys);//post请求参数
req.open('POST', url, true);
req.responseType = 'blob';
req.setRequestHeader('Content-Type', 'application/json');
req.setRequestHeader('token', localStorage.getItem('sysToken'))//携带token参数
req.onload = () => {
const data = req.response;
const blob = new Blob([data], { type: "application/octet-stream" });
const blobUrl = window.URL.createObjectURL(blob);
this.download(blobUrl);
};
req.send(formData);
},
download (blobUrl) {
const a = document.createElement('a');
a.style.display = 'none';
a.download = '批量导出设备信息.xlsx'; //文件名
a.href = blobUrl;
document.body.appendChild(a)
a.click()
window.URL.revokeObjectURL(a.href)
},
标签:web,const,req,H5,xhr,link,blob,let,下载 来源: https://blog.csdn.net/anitem/article/details/123246140
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。