ll
liukangdong
2024-08-23 15b5b761a15805719294e7660f4cb84b35f84af8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import fileDownload from 'js-file-download'
import message from './message'
 
export default function (response, decode = true, mime = 'application/octet-stream') {
  // 当下载接口没有成功返回流并且接口返回的是JSON时需要对响应流进行解析并提示错误。(处理下载接口出现未知异常的情况)
  if (response.headers['content-type'] === 'application/json') {
    const blob = new Blob([response.data])
    const fileReader = new FileReader()
    fileReader.readAsText(blob, 'utf-8')
    fileReader.onload = function () {
      message.apiFailed(JSON.parse(fileReader.result))
    }
    return
  }
  if (response.headers['content-length'] === '0') {
    message.error('无法下载文件,可能因为数据处理错误导致文件大小为0B')
    return
  }
  // 下载接口在响应头eva-download-filename中存放文件名称,接口的返回的文件名称需采用url encode的方式进行编码
  fileDownload(response.data, decode ? decodeURI(response.headers['eva-download-filename']) : response.headers['eva-download-filename'], mime)
}