node获取文件流转发给前端下载
// node端
router.post('/download', (req, res, next) => {
request.get({
url
}).on('response', function(response) {
// console.log(response.headers['content-type']) // 'image/png'
// res.headers['content-type'] = response.headers['content-type']
this.pipe(res)
});
});
// 客户端
axios.post('/download', { url }, {
headers: {
// token等
},
responseType: 'blob'
})
.then(res => {
// content-type可以统一设置为application/octet-stream,用filename的扩展名就会生成对应的文件
let type = 'application/octet-stream';
let URL = window.URL || window.webkitURL;
let blob = new Blob([ res.data ], { type });
let src = URL.createObjectURL(blob);
let element = document.createElement('a');
element.href = src;
element.download = name;
document.body.appendChild(element)
element.click()
element.remove();
})
node转发html请求
同上