import request from '@/utils/request'
import { Message, MessageBox } from 'element-ui'
export async function downloadfile(url, name) {
if (!url) return Message({ message: '下载文件链接为空', type: 'error' })
if (!name) return Message({ message: '下载文件名称为空', type: 'error' })
const res = await request({
url: url,
method: 'get',
responseType: 'blob'
})
console.log(res)
let reader = new FileReader(); //使用 new FileReader(),将 blob 转为 json,然后进行处理
reader.readAsText(res)
reader.onload = function (result) {
try {
let resData = JSON.parse(result.target.result); // 解析对象成功,说明是json数据
if (resData.code != 0) {
Message({ message: resData.msg, type: 'error' })
}
} catch (err) { // 解析成对象失败,说明是正常的文件流
var objectURL = window.URL.createObjectURL(new Blob([res], { type: "text/csv;" }))
var a = document.createElement('a');
a.href = objectURL;
a.download = `${name}.csv`;
// a.target = '_blank'
a.click();
a = null
window.URL.revokeObjectURL(objectURL);
}
};
}
blob文件导出,设置了responseType: ‘blob‘之后,如果返回json错误信息,处理方法
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 方案一 在请求下载的时候,为了解决乱码问题,我们都会给 XHR 的 responseType 指定为 blob 或...
- 在请求下载的时候,为了解决乱码问题,我们都会给 XHR 的 responseType 指定为 blob 或者 ar...
- 请求下载解决乱码问题, 会给XHR 的 responseType 指定为 blob 或者 arraybuffer;...
- 使用Retrofit+RxJava网络框架进行网络请求,对网络请求的结果进行处理需要实现三个方法onComplet...
- 一般的服务端框架返回的数据格式是确定的,在客户端和服务端交互的时候,如果交互成功那么服务端返回的状态码是200,具...