download(url, params, filename, config) { downloadLoadingInstance = Loading.service({ text: "正在下载数据,请稍候", spinner: "el-icon-loading", background: "rgba(0, 0, 0, 0.7)", }) return service.post(url, params, { transformRequest: [(params) => { return tansParams(params) }], headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, responseType: 'blob', ...config }).then(async (data) => { const isLogin = await blobValidate(data); if (isLogin) { const blob = new Blob([data]) saveAs(blob, filename) } else { const resText = await data.text(); const rspObj = JSON.parse(resText); const errMsg = errorCode[rspObj.code] || rspObj.msg || errorCode['default'] Message.error(errMsg); } downloadLoadingInstance.close(); }).catch((r) => { console.error(r) Message.error('下载文件出现错误,请联系管理员!') downloadLoadingInstance.close(); }) }
时间: 2024-03-28 21:37:31 浏览: 79
这段代码是一个文件下载函数,它使用了axios库发送POST请求,请求数据的格式为application/x-www-form-urlencoded,响应数据的格式为Blob对象。在请求发送前,使用了一个transformRequest函数tansParams对请求参数进行了转换。请求成功后,会进行Blob验证,如果验证通过,就使用FileSaver.js库的saveAs函数将Blob对象保存到本地文件。如果验证失败,就会显示错误信息。
具体的参数含义如下:
- url: 下载文件的URL地址。
- params: 下载文件时需要发送的数据。
- filename: 下载文件保存到本地时的文件名。
- config: 可选参数,用于覆盖axios的默认配置。
这个函数使用了Loading.service()方法创建了一个加载动画,用于在下载文件时显示加载中的提示。在请求成功或失败后,都会调用downloadLoadingInstance.close()方法关闭加载动画。
在请求成功后,使用了一个异步函数blobValidate()对响应数据进行了验证。如果验证通过,就使用Blob对象创建了一个新的Blob对象,并使用saveAs()方法将其保存到本地文件。如果验证失败,就会显示错误信息。
需要注意的是,这个函数依赖于两个库:axios和FileSaver.js。在使用之前,需要先导入这两个库。
阅读全文