奥非域

vue文件下载实现

在vue项目中,有时候需要实现文件下载,但因为部分后端接口写法原因,并不适用a链接或window.open直接下载文件,优化方法如下:

downfile(uuid,fileName){
 // window.open('/api3/file/disk/'+uuid)
 // 如: https://www.abc.com/api3/file/disk/7766222 这样的链接
 let a = document.createElement('a')
 a.href = process.env.VUE_APP_API_BASE_URL+'/file/disk/'+uuid
 a.download = fileName
 a.click()
 a.remove()
}

如果后端是直接输出的文件内容,还可以这样写:

const url = URL.createObjectURL(new Blob([res]))
const a = document.createElement('a')
a.href = url
a.download = `文件_${Date.now()}.docx`
a.click()
a.remove()

当然,请求的时候,需要设置返回类型为blob,也就是增加一个 responseType: 'blob' 参数。