在页面中使用了Buffer,但是浏览器中JS没有Buffer对象,它是存在Node中。
将Buffer对象改用ArrayBuffer对象,ArrayBuffer对象是 ES6 才写入标准的。浏览器原生提供ArrayBuffer()构造函数,用来生成实例。它接受一个整数作为参数,表示这段二进制数据占用多少个字节。
改写后的下载方法:
function onDownload(params) {
axios
.post('/updateStyle', params)
.then((response) => {
const length = response.data.content.data.length
let buf = new ArrayBuffer(length)
let view = new Uint8Array(buf)
for (let i = 0; i < length; ++i) {
view[i] = response.data.content.data[i]
let blob = new Blob([buf], { type: 'application/x-tar' })
const url = URL.createObjectURL(blob)
const time = Math.round(new Date().getTime() / 1000)
const fileName = `themes.${time}.zip`
const link = document.createElement('a')
link.style.display = 'none'
link.href = url
link.setAttribute('download', fileName)
document.body.appendChild(link)
link.click()
document.body.removeChild(link)
window.URL.revokeObjectURL(url)
.catch((error) => {
console.log(error)
用户4250447608174
Vue.js