问题:
下载文件,后端返回buffer,前端下载;浏览器报ReferenceError: Buffer is not defined
原因:
在页面中使用了Buffer,但是浏览器中JS没有Buffer对象,它是存在Node中。
解决:
将Buffer对象改用ArrayBuffer对象,ArrayBuffer对象是 ES6 才写入标准的。浏览器原生提供ArrayBuffer()构造函数,用来生成实例。它接受一个整数作为参数,表示这段二进制数据占用多少个字节。
接口返回结果:
改写后的下载方法:
function onDownload(params) {
axios
.post('/updateStyle', params)
.then((response) => {
// 原本的写法
// data.content返回为Buffer,拷贝buffer的数据到新建的Buffer实例,使用的字符编码为binary二进制
// let buf = Buffer.from(response.data.content, 'bi