post下载、返回Base64下载

1.大多数时候我们都是通过get实现下载,那如果需要通过post实现呢?下面就来记录一下post实现下载的代码:

//url 请求地址
//obj 传入的参数
downloadExcel(url, obj) {
        let tempForm = document.createElement('form');
        // var token = window.token || ''
        // if (url && token) {
        //     if (url.indexOf('?') !== -1) {
        //         url = url + '&token=' + token;
        //     } else {
        //         url = url + '?token=' + token;
        //     }
        // }
        tempForm.action = url;
        tempForm.method = 'post';
        tempForm.onsubmit = "return false";
        tempForm.style.display = 'none';
        for (let st in obj) {
            if (obj.hasOwnProperty(st)) {
                let opt = document.createElement('textarea');
                opt.name = st;
                opt.value = obj[st];
                tempForm.appendChild(opt);
            }
        }
        document.body.appendChild(tempForm);
        tempForm.submit();
        return tempForm;
    }

2.后端返回的Base64位如何转换

// base64转换
export function base64ToArrayBuffer(base64) {
  var binaryString = window.atob(base64);
  var binaryLen = binaryString.length;
  var bytes = new Uint8Array(binaryLen);
  for (var i = 0; i < binaryLen; i++) {
    var ascii = binaryString.charCodeAt(i);
    bytes[i] = ascii;
  }
  return bytes;
}

export function saveByteArray(reportName, byte) {
  const link = document.createElement("a"); // 创建a标签
  const blob = new Blob([byte], {
    type: "application/vnd.ms-excel;charset=utf-8",
  }); // response就是接口返回的文件流
  const objectUrl = URL.createObjectURL(blob);
  link.href = objectUrl;
  link.download = reportName;
  link.click(); // 下载文件
  URL.revokeObjectURL(objectUrl);
}
// 应用
const sampleArr = base64ToArrayBuffer(this.failData.fileByte); // 这里先调用base64ToArrayBuffer将base64转为二进制流
saveByteArray(文件名称, sampleArr); // 然后将文件名称和数据流直接给到saveByteArray方法进行下载
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值