欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

blob - 二进制文件流下载

程序员文章站 2022-05-18 19:07:51
axios请求下载blob二进制流文件(自定义下载文件文件名) ......
/**
 * 返回值文件类型为 blob 二进制流文件
 * responsetype: 'blob' 
 * params 接口所需参数
 * 命名文件名:依据时间戳命名文件名
 *      (导出时需要延迟,否则导出文件失败,默认文件名时直接导出)
 * */

$axios.get(`api`, {
    responsetype: 'blob',
    params
}).then((res) => {
    // response 的返回值为二进制文件流

    // 创建时间戳
    let date = new date(),
        yyyy = date.getfullyear(),
        mm = date.getmonth() + 1,
        dd = date.getdate(),
        hh = date.gethours(),
        mm = date.getminutes(),
        ss = date.getseconds();
    var timestr = `${yyyy}${mm}${dd}${hh}${mm}${ss}`;

    // 导出二进制文件
    settimeout(() => {
        // 创建url对象 url.createobjecturl(object)
        let url = window.url.createobjecturl(res.data);
        let link = document.createelement('a');
        link.style.display = 'none';
        link.href = url;
        // 指定文件名&文件类型(后缀名)
        let filename = `users${timestr}cn.xls`;
        /**
         * 添加属性,并赋指定的值 el.setattribute('download','zzz')
         * demo: <a href="abc.gif" download="zzz"> 
         * download属性的值即使当前要导出的文件的文件名
         * */
        link.setattribute('download', filename);
        link.click();
        // 释放创建的对象(创建的新的url必须通过该方法释放)
        window.url.revokeobjecturl(url);
    }, 500);
}).catch((err) => {
    console.log('文件导出失败: ', err);
});