直接上vue的代码:
let sendData = {} let successCallBack = (resp) => { if (resp.status !== 200) { this.$message.error('文件下载失败') return false } // ********************* 接收文件流 *********************** let blob = new Blob([resp.data], { // type mimi类型 可以百度详细类型 // word文档为msword,application/pdfpdf文档为pdf application/vnd.ms-excel // image/jpeg jpg // type: `msword` type: `application/msword` }) let objectUrl = URL.createObjectURL(blob) let link = document.createElement('a') let fName = decodeURI(resp.headers['content-disposition'].split('=')[1]) link.href = objectUrl link.setAttribute('download', fName) document.body.appendChild(link) link.click() } // this.$request.xxx() 是因为我将axios重新进行了封装 this.$Request.getFiles({ data: sendData, responseType: 'blob', // **********这里的响应类型必须设置为'blob' success: successCallBack, requestDataType: 'form-data' }) }
更详细的请参考:https://blog.csdn.net/CarryBest/article/details/102586653