axios异步下载二进制格式文件

2023-07-16 vue3axios

统计各类型文件,接触到的就会写在这。

# 通用解决方案

理论上可以下载绝大多数文件,我用xml格式文件做个测试,其他文件自行测试。

/**
 * 下载文件
 * @param id 请求参数
 * @param fileName 文件名称
 */
const clickExportXml = async (id, fileName) => {
  const data = await exportXMLApi(id)
  const url = window.URL.createObjectURL(new Blob([data.data]))
  const link = document.createElement("a")
  link.href = url
  link.setAttribute("download", fileName)
  document.body.appendChild(link)
  link.click()
  document.body.removeChild(link)
}

exportXMLApi是封装的接口如下所示:

export const exportXMLApi = (definitionId) => {
  return request({
    url: `/api/admin/v1/process-definition/export/xml/${definitionId}`,
    responseType: "arraybuffer",
    method: "GET"
  })
}
上次更新: 7 个月前