关于axios请求下载文件处理逻辑

本文介绍了一个JavaScript函数,用于异步导出文件,根据不同文件类型(如JSON或二进制数据)进行处理。通过FileReader解析JSON,而在非IE浏览器中利用`download`属性实现文件下载。
摘要由CSDN通过智能技术生成
/**
     * 导出文件
     * @param {*} data 接口返回数据
     * @param {*} title 下载文件名
     */
    exportFile(data,title){
        return new Promise((resolve,reject)=>{
            let type = data.type
            if (type.includes('application/json')) {
                let reader = new FileReader()
                reader.readAsText(data)
                reader.onload = function (event) {
                    let content = reader.result
                    let message = JSON.parse(content) // 错误信息
                    reject(message)
                }
            }else{
                const blob = new Blob([data])
                const fileName = title
                if ('download' in document.createElement('a')) { // 非IE下载
                const elink = document.createElement('a')
                elink.download = fileName
                elink.style.display = 'none'
                elink.href = URL.createObjectURL(blob)
                document.body.appendChild(elink)
                elink.click()
                URL.revokeObjectURL(elink.href) // 释放URL 对象
                document.body.removeChild(elink)
                } else { // IE10+下载
                navigator.msSaveBlob(blob, fileName)
                }
                resolve()
            }
        })
    }

	// 使用
	exportFile(res,a.xlsx).then((res)=>{
		// 成功的回调
	}).catch((err)=>{
		// 失败的回调
	})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值