Download.js 1.2 KB

123456789101112131415161718192021222324252627282930
  1. export function convertRes2Blob(response) {
  2. // 提取文件名
  3. const fileName = response.headers['content-disposition'].match(
  4. /filename=(.*)/
  5. )[1]
  6. // 将二进制流转为blob
  7. const blob = new Blob([response.data], {type: 'application/octet-stream'})
  8. if (typeof window.navigator.msSaveBlob !== 'undefined') {
  9. // 兼容IE,window.navigator.msSaveBlob:以本地方式保存文件
  10. window.navigator.msSaveBlob(blob, decodeURI(fileName))
  11. } else {
  12. // 创建新的URL并指向File对象或者Blob对象的地址
  13. const blobURL = window.URL.createObjectURL(blob)
  14. // 创建a标签,用于跳转至下载链接
  15. const tempLink = document.createElement('a')
  16. tempLink.style.display = 'none'
  17. tempLink.href = blobURL
  18. tempLink.setAttribute('download', decodeURI(fileName))
  19. // 兼容:某些浏览器不支持HTML5的download属性
  20. if (typeof tempLink.download === 'undefined') {
  21. tempLink.setAttribute('target', '_blank')
  22. }
  23. // 挂载a标签
  24. document.body.appendChild(tempLink)
  25. tempLink.click()
  26. document.body.removeChild(tempLink)
  27. // 释放blob URL地址
  28. window.URL.revokeObjectURL(blobURL)
  29. }
  30. }