文件下载或导出时打不开、空白或乱码:
可能是没有设置responseType,默认为空,值可以为blob、arrayBuffer、json、text、document、json
一般后端返回文件流,所以需要进行返回数据的处理:根据后台返回情况设不同的值
axios.get({
url:xxxxxx,
method:get,
data:{},
responseType:blob
}).then(res={
console.log(res);
});
文件格式转换过来了,下一步就是下载和重命名:
axios.get({
url:xxxxxx,
method:get,
data:{},
responseType:blob
}).then(res={
constblob=newBlob([res]);
consta=document.createElement(a);
//此处文件名称和文件后缀根据项目情况而定
a.download=文件名称.xlsx;
a.style.display=none;
a.href=URL.createObjectURL(blob);
document.body.appendChild(a);
a.click();
URL.revokeObjectURL(a.href);
document.body.removeChild(a);
});
此处需要说下newBolb()
varaBlob=newBlob(array,options);
参数
array是一个由ArrayBuffer,ArrayBufferView,Blob,DOMString等对象构成的Array,或者其他类似对象的混合体,它将会被放进Blob。DOMStrings会被编码为UTF-8。
options是一个可选的BlobPropertyBag字典,它可能会指定如下两个属性:
type,默认值为"",它代表了将会被放入到blob中的数组内容的MIME类型。
endings,默认值为"transparent",用于指定包含行结束符\n的字符串如何被写入。它是以下两个值中的一个:"native",代表行结束符会被更改为适合宿主操作系统文件系统的换行符,或者"transparent",代表会保持blob中保存的结束符不变Non-Standard
示例
varaFileParts=[aid="a"bid="b"hey!/b/a];//一个包含DOMString的数组
varoMyBlob=newBlob(aFileParts,{type:text/html});//得到blob
#VUE#