兼容ie——下载base64pdf格式文件

痛定思痛。 2022-10-07 08:58 204阅读 0赞

1.URL转blob

  1. dataURLtoBlob (dataurl) {
  2. const bstr = atob(dataurl)
  3. let n = bstr.length
  4. const u8arr = new Uint8Array(n)
  5. while (n--) {
  6. u8arr[n] = bstr.charCodeAt(n)
  7. }
  8. return new Blob([u8arr], { type: 'pdf' }) // pdf下载
  9. // return new Blob([u8arr], { type: 'application/vnd.ms-excel' }) // 表格下载
  10. },
  11. // 兼容IE浏览器下载文件
  12. getIEDown (data, companyName, projectName) {
  13. // 兼容ie浏览器写法
  14. const URL = this.dataURLtoBlob(data)
  15. const reader = new FileReader()
  16. reader.readAsDataURL(URL)
  17. reader.onload = function (e) {
  18. if (window.navigator.msSaveOrOpenBlob) {
  19. const bstr = atob(e.target.result.split(',')[1])
  20. let n = bstr.length
  21. const u8arr = new Uint8Array(n)
  22. while (n--) {
  23. u8arr[n] = bstr.charCodeAt(n)
  24. }
  25. const blob = new Blob([u8arr])
  26. window.navigator.msSaveOrOpenBlob(blob, `${ companyName}-${ projectName}.pdf`)
  27. } else {
  28. const a = document.createElement('a')
  29. a.download = `${ companyName}-${ projectName}.pdf`
  30. a.href = e.target.result
  31. document.body.appendChild(a)
  32. a.click()
  33. document.body.removeChild(a)
  34. }
  35. }
  36. },
  37. this.getIEDown(data, this.companyName, this.projectName)

2.base64转blob

  1. base64ToArrayBuffer (data) {
  2. let binaryString = window.atob(data)
  3. let binaryLen = binaryString.length
  4. let bytes = new Uint8Array(binaryLen)
  5. for (let i = 0; i < binaryLen; i++) {
  6. let ascii = binaryString.charCodeAt(i)
  7. bytes[i] = ascii
  8. }
  9. return bytes
  10. },
  11. base64 (data, types, name) => {
  12. let arrBuffer = this.base64ToArrayBuffer(data)
  13. let newBlob = new Blob([arrBuffer], { type: types })
  14. // 兼容IE
  15. if (window.navigator && window.navigator.msSaveOrOpenBlob) {
  16. // window.navigator.msSaveOrOpenBlob(newBlob)
  17. window.navigator.msSaveOrOpenBlob(newBlob, name)
  18. }
  19. let data1 = window.URL.createObjectURL(newBlob)
  20. let link = document.createElement('a')
  21. document.body.appendChild(link) // required in FF, optional for Chrome
  22. link.href = data1
  23. link.download = name
  24. link.click()
  25. window.URL.revokeObjectURL(data1)
  26. link.remove()
  27. }
  28. this.base64(data, 'mime', '下载文件名称')

发表评论

表情:
评论列表 (有 0 条评论,204人围观)

还没有评论,来说两句吧...

相关阅读