1.URL转blob
dataURLtoBlob (dataurl) {
const bstr = atob(dataurl)
let n = bstr.length
const u8arr = new Uint8Array(n)
while (n--) {
u8arr[n] = bstr.charCodeAt(n)
}
return new Blob([u8arr], { type: 'pdf' }) // pdf下载
// return new Blob([u8arr], { type: 'application/vnd.ms-excel' }) // 表格下载
},
// 兼容IE浏览器下载文件
getIEDown (data, companyName, projectName) {
// 兼容ie浏览器写法
const URL = this.dataURLtoBlob(data)
const reader = new FileReader()
reader.readAsDataURL(URL)
reader.onload = function (e) {
if (window.navigator.msSaveOrOpenBlob) {
const bstr = atob(e.target.result.split(',')[1])
let n = bstr.length
const u8arr = new Uint8Array(n)
while (n--) {
u8arr[n] = bstr.charCodeAt(n)
}
const blob = new Blob([u8arr])
window.navigator.msSaveOrOpenBlob(blob, `${ companyName}-${ projectName}.pdf`)
} else {
const a = document.createElement('a')
a.download = `${ companyName}-${ projectName}.pdf`
a.href = e.target.result
document.body.appendChild(a)
a.click()
document.body.removeChild(a)
}
}
},
this.getIEDown(data, this.companyName, this.projectName)
2.base64转blob
base64ToArrayBuffer (data) {
let binaryString = window.atob(data)
let binaryLen = binaryString.length
let bytes = new Uint8Array(binaryLen)
for (let i = 0; i < binaryLen; i++) {
let ascii = binaryString.charCodeAt(i)
bytes[i] = ascii
}
return bytes
},
base64 (data, types, name) => {
let arrBuffer = this.base64ToArrayBuffer(data)
let newBlob = new Blob([arrBuffer], { type: types })
// 兼容IE
if (window.navigator && window.navigator.msSaveOrOpenBlob) {
// window.navigator.msSaveOrOpenBlob(newBlob)
window.navigator.msSaveOrOpenBlob(newBlob, name)
}
let data1 = window.URL.createObjectURL(newBlob)
let link = document.createElement('a')
document.body.appendChild(link) // required in FF, optional for Chrome
link.href = data1
link.download = name
link.click()
window.URL.revokeObjectURL(data1)
link.remove()
}
this.base64(data, 'mime', '下载文件名称')
还没有评论,来说两句吧...