this.$http({
url: this.$http.adornUrl('/station/prod/skuExport'),
method: 'get',
params: {},
responseType: 'blob' // 解决文件下载时出现的乱码问题
}).then(({ data }) => {
var blob = new Blob([data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8' })
const fileName = '导出.xlsx'
const elink = document.createElement('a')
if ('download' in elink) {
// 非IE浏览器的下载处理方式
elink.download = fileName
elink.style.display = 'none'
elink.href = URL.createObjectURL(blob)
document.body.appendChild(elink)
elink.click()
URL.revokeObjectURL(elink.href) // 释放已创建的URL对象
document.body.removeChild(elink)
} else {
// 兼容IE10及以上版本的下载逻辑
navigator.msSaveBlob(blob, fileName)
}
})
以上代码实现了通过前端调用接口并触发文件下载的功能,适用于导出Excel等场景。使用了Blob和URL对象来处理二进制流数据,同时兼容主流浏览器与IE10+环境。
核心要点包括设置正确的responseType以避免乱码、动态创建a标签实现下载行为,并在操作完成后清理DOM元素和内存引用,确保页面性能不受影响。对于不支持原生download属性的浏览器,则采用msSaveBlob这一特定API进行降级处理。


雷达卡


京公网安备 11010802022788号







