获取blob格式下载文件
上代码
/**
* 下载blob文件
* @param {String} blobText blob内容
* @param {String} dowFileName 下载后的文件名默认xxxx
* @param {String} dowFileSuf 下载后的文件名默认 xxxx
* @returns
*/
export function dowBlobFile(
blobText = null,
dowFileName = "默认文件名",
dowFileSuf = ".默认后缀"
) {
return new Promise((resolve, reject) => {
// 参数缺少
if (!blobText) reject(new Error("下载文件失败-文件为空!"));
const blob = new Blob([blobText]);
if (blob.size > 0) {
// 使用a标签模拟点击下载
const elink = document.createElement("a");
elink.download = `${dowFileName}.${dowFileSuf}`;
// 给a标签设置属性
elink.style.display = "none";
elink.href = URL.createObjectURL(blob);
document.body.appendChild(elink);
elink.click();
// 清空
URL.revokeObjectURL(elink.href);
document.body.removeChild(elink);
// 下载成功
resolve();
} else {
reject(new Error("下载文件失败-文件为空!"));
}
});
}
注意:
- 后端通过文件流返回一个blob数据类型
- 主要通过创建a标签模拟点击实现
- 给a标签设置下载链接等一些属性,并revokeObjectURL创建一个本地文件链接
- 调用点击事件下载文件