axios POST请求模仿Get传参请求blob数据并下载

主要内容

通过axios POST请求模仿Get传参请求blob数据并下载。
通过XMLHttpReqeust、Jquery Ajax请求服务端接口均收不到参数,最后axios成功,原理未知,仅作记录。

实现

function (data, scallback) {
 
    var params = "";
    Object.keys(data).forEach(k => {
        if (params != "") {
            params += "&";
        }

        var v = (data[k] == null ? "" : data[k]);
        
        //修正 params["beginTime"] = 2024-07-01    params["endTime"] = 2025-08-25 形式的参数
        if (k.indexOf("beginTime") > 0) {
            params += ('params%5B%22beginTime%22%5D' + "=" + v);
        } else if (k.indexOf("endTime") > 0) {
            params += ('params%5B%22endTime%22%5D' + "=" + v);
        } else {
            //正常赋值
            params += ("" + k + "=" + v);
        } 
    });
     
    axios.post(
        top.window.BaseServerUrl + "?" + params,
        {},
        {
            responseType: "blob",
            headers: { "Authorization": top.window.Config.UserInfo["token"] }
        }
    ).then(res => {
        var url = URL.createObjectURL(new Blob([res.data]));
        const link = document.createElement('a');
        link.style.display = 'none';
        link.href = url;
        link.setAttribute('download', '数据下载.xlsx');
        document.body.appendChild(link);
        link.click();
        document.body.removeChild(link);
    }).catch(ers => {
        console.log("error", ers);
    });
 

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值