vue二进制图片/文件流下载
问题:后台返回二进制文件,直接控制台打印时乱码的。
解决方式:
download(params) {
this.$request({
url: baseUrl + '/file/download',
method: 'post',
data:params ,
responseType: 'arraybuffer'
}).then(res => {
var blob = new Blob([res], { type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document;charset=utf-8' })//这里type指定下载文件的类型,这里用的时.docx类型
let downloadElement = document.createElement('a')//创建<a>标签
let href = window.URL.createObjectURL(blob) // 创建下载的链接
downloadElement.href = href
downloadElement.download = '下载文件' // 下载后文件名
document.body.appendChild(downloadElement)
downloadElement.click() // 点击下载
document.body.removeChild(downloadElement) // 下载完成移除元素
window.URL.revokeObjectURL(href) // 释放掉blob对象
}).catch(err => {
console.log(err)
})
},
这篇博客主要介绍了在Vue中如何处理后台返回的二进制文件流并实现下载。通过设置`responseType`为`arraybuffer`,然后转换为Blob对象,创建下载链接,并利用`<a>`标签模拟点击下载,成功解决了控制台打印时出现的乱码问题。该方法适用于下载各类二进制文件,如.docx文档。
1万+





