美文网首页
vue 项目使用 axios 下载 tar.gz 包

vue 项目使用 axios 下载 tar.gz 包

作者: VioletJack | 来源:发表于2021-10-20 11:34 被阅读0次

问题

有个下载 tar.gz 包的需求,一开始使用正常的 axios 请求转 blob 的方式做的,结果在遇到下载 tar.gz 的时候发现无法打开,提示格式不支持。找了好多办法最后找到了如下方案。

解决方案

axios({
  method: 'get',
  url: '/api/download?format=tar.gz',
  headers: {
    'Content-Type': 'application/json; application/octet-steam',
  },
  responseType: 'blob', // 重点在于此
}).then(response => {
  let data = response.data
  const fileName = `PACKAGE-${new Date().valueOf()}`
  downloadTargz(data, fileName, 'tar.gz')
})

附上下载 tar 包的代码:

function downloadTargz (content, fileName, suffixName) {
  const blob = new Blob([content], {
    type: 'application/x-tar',
  })
  const url = window.URL.createObjectURL(blob)
  const a = document.createElement('a')
  a.href = url
  a.download = fileName + '.' + suffixName
  a.click()
}

最后

必须 axios 中加上 responseType: blob 这个参数!!!
必须 axios 中加上 responseType: blob 这个参数!!!
必须 axios 中加上 responseType: blob 这个参数!!!

相关文章

网友评论

      本文标题:vue 项目使用 axios 下载 tar.gz 包

      本文链接:https://www.haomeiwen.com/subject/woltaltx.html