首页 > 解决方案 > 使用 axios 下载 zip 文件,但 zip 文件损坏,无法解压

问题描述

我正在开发一个 vue 项目,我正在获取一个 zip 文件作为对烧瓶 API 的响应。但是当我使用 axios 下载 zip 文件时,zip 文件已损坏,而不是解压缩

# flask
@updown.route('/download1', methods=['POST'])
@auth.login_required
def download1():
    req = request.json
    dirname = '/data/pub/'
    basename = f'{req["a"]}.zip'

    response = make_response(send_from_directory(dirname, basename, as_attachment=True))
    response.headers['Access-Control-Expose-Headers'] = 'X-filename'
    response.headers["X-filename"] = basename
    return response
// Vue
const instance = axios.create({
  baseURL: 'http://x.x.x.x:5000/api/',
  headers: { 'Content-Type': 'application/json; application/octet-stream' },
  responseType: 'blob'
})

---

async clickData (row) {
      const res = await this.$http.post('updown/download1', { a: row.jobid })
      const blob = new Blob([res.data])
      const fileName = res.headers['x-filename']
      const urlObject = window.URL || window.webkitURL || window
      const url = urlObject.createObjectURL(blob)
      const el = document.createElement('a')
      el.href = url
      el.download = fileName
      el.click()
      urlObject.revokeObjectURL(url)
    }

标签: vue.jsnginxflaskaxiosblob

解决方案


推荐阅读