前端 base64格式文件下载

  // 导出
  const onExportPasswordAndUserCodeList = async () => {
    const formVal = await form.validateFields();
    const { userCode, keyword } = formVal;
    setDLoadings(true);
    const params = {
      projectId: locationQuery.id,
      urseCode: userCode || '',
      keyword: keyword || '',
    };
    saveAs(params);
  };
  const saveAs = (params) => {
    ExportPasswordAndUserCodeList(params).then((res) => {
      let type =
        'data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64,';
      downloadFileByBase64(`${type}${res.data}`, locationQuery.name);
      setDLoadings(false);
    });
  };
   // type 是必须的,如果后端给我们了最好,如果碰到个比较坑的后端就需要自己去写,我这里下载时xlsx,其余格式自行百度
  function dataURLtoBlob(dataurl) {
    var arr = dataurl.split(','),
      mime = arr[0].match(/:(.*?);/)[1],
      bstr = atob(arr[1]),
      n = bstr.length,
      u8arr = new Uint8Array(n);
    while (n--) {
      u8arr[n] = bstr.charCodeAt(n);
    }
    return new Blob([u8arr], { type: mime });
  }

  function downloadFile(url, name = "What's the fuvk") {
    var a = document.createElement('a');
    a.setAttribute('href', url);
    a.setAttribute('download', name);
    a.setAttribute('target', '_blank');
    let clickEvent = document.createEvent('MouseEvents');
    clickEvent.initEvent('click', true, true);
    a.dispatchEvent(clickEvent);
  }

  function downloadFileByBase64(base64, name) {
    var myBlob = dataURLtoBlob(base64);
    var myUrl = URL.createObjectURL(myBlob);
    downloadFile(myUrl, name);
  }
Api接口
export const ExportPasswordAndUserCodeList = (formData: object) => {
  return usePost(
    `${Config.Api.Base}${Config.Api.ExportPasswordAndUserCodeList}`,
    formData,
   // {
      //responseType: 'blob',  //responseType一定要删除,只有是文件流才需要
    ///},
  );
};

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Jim-zf

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值