美文网首页
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