wwwwwllllk 发表于 2022-10-26 21:59:49

后端返回二进制文件流,前端如何下载文件


注意点:要加 responseType: 'blob'   , 传入的是res.data(因为返回res就是乱码,导致刚开始传的是res,结果下载下来是object,后来传入res.data就好了)
```
axios.get({
    url: 'xxxxxx',
    method: 'get',
    data:{},
    responseType: 'blob', // 声明返回blob格式
}).then(res => {
        downLoadBlobFile(res.data);
});

function downLoadBlodFile(excelFlow){
            const elink = document.createElement('a');
            elink.download = 'XXX.csv';//定义表格名称,后缀是文件格式
            elink.style.display = 'none';
            const blob = new Blob(, { type: 'text/csv,charset=UTF-8'});
            elink.href = URL.createObjectURL(blob);
            document.body.appendChild(elink);
            elink.click();
            document.body.removeChild(elink);
}
```

李恒道 发表于 2022-10-26 22:15:46

我记着filesaver是直接可以传地址的
不太推荐用dom点击式
部分浏览器的话点击会直接跳转到文件当前页面印象里
(filesaver好像也是这种方式...但是微妙的兼容性好一地那)


Saving URLs

FileSaver.saveAs("https://httpbin.org/image", "image.jpg");


Ne-21 发表于 2022-10-27 10:28:08

李恒道 发表于 2022-10-26 22:15
我记着filesaver是直接可以传地址的
不太推荐用dom点击式
部分浏览器的话点击会直接跳转到文件当前页面印象 ...

我之前就是用dom,发现手机端点下载没反应QAQ
页: [1]
查看完整版本: 后端返回二进制文件流,前端如何下载文件