先上完整代码:
export const downloadFile = parameter => {
return request({
responseType: 'blob',
headers: {
'Content-Type': 'multipart/form-data',
},
url: documentsShareApi.DownloadFile + `?fileId=${parameter.fileId}`,
method: 'get',
})
}
downloadFile({ fileId: record.id }).then(res => {
console.log(res)
const link = document.createElement('a') //创建一个a标签
const blob = new Blob([res]) //实例化一个blob出来
link.style.display = 'none'
link.href = URL.createObjectURL(blob) //将后端返回的数据通过blob转换为一个地址
//设置下载下来后文件的名字以及文件格式
link.setAttribute(
'download',
record.fileName //upload为下载的文件信息 可以在外层包一个函数 将upload作为参数传递进来
)
document.body.appendChild(link)
link.click() //下载该文件
document.body.removeChild(link)
})
downloadFile方法是后端提供的下载接口方法, 下载的主要思路是创建一个a标签, 并将文件实例化为blob格式, 然后将实例化出来的这个blob转化为一个下载地址, 然后模拟a标签的点击事件, 进行下载操作