后端返回文件流,前端blob下载

后端

return response()->download(storage_path('app/public').$file,$filename,array(
                    'Content-Type' => 'application/pdf',
                ));

前端:

downloadPage(id){
      webServices.post('downPage',{"id":id},{responseType:'arraybuffer'}).then((res)=>{
        let blob = new Blob([res.data], { type: "application/pdf" });
        const elink = document.createElement('a')
        elink.download = 'testPage.pdf';
        elink.style.display = 'none'
        elink.href = URL.createObjectURL(blob)
        document.body.appendChild(elink)
        elink.click()
        URL.revokeObjectURL(elink.href) // 释放URL 对象
        // this.downLoading = false
        document.body.removeChild(elink)

      });
    },
{responseType:'arraybuffer'}这个一定要传,不然下载的文件就是空白文件
踩过这个坑,还有下一个坑等着你,这一路就是给自己填坑,坑填多了,也就习惯了,直到这一路平坦了,也就无怨无悔了。
原文地址:https://www.cnblogs.com/xiaofeilin/p/14087440.html