js获取blob格式下载文件

获取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创建一个本地文件链接
  • 调用点击事件下载文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tommyrunner

你的支持,就是我的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值