文件下载POST

好久没有写东西了,因为我换了一家公司但是,居然比之前还忙。之前有写过get的文件自动下载,今天记录一下post自动下载。

export async function downloadBlob() {
  let res = await consts.axios.post(saveUrl, params, {
    responseType: 'arraybuffer',
  });

  if (!res) return;
  try {
    //如果不报错,说明后台返回的是json对象,则弹框提示
    //如果报错,说明返回的是文件流,进入catch,下载文件
    let enc = new TextDecoder('utf-8');
    res = JSON.parse(enc.decode(new Uint8Array(res.data))); //转化成json对象
    if (res.code == '200') {
        //操作成功,
      });
    } else {
      //接口请求失败
    }
  } catch (err) {
    const name = res.headers['content-disposition'].match(/filename="(S*)"|filename=(S*)/)
    const fileName = decodeURIComponent(name[1] || name[2]);
    downloadAttachment(res.data, fileName);
  }
}
export function downloadAttachment(data, fileName) {
  let fileContent = data;
  let a = document.createElement('a');
  a.download = fileName;
  a.href = global.URL.createObjectURL(new Blob([fileContent]));
  a.click();
}

  

原文地址:https://www.cnblogs.com/Ewarm/p/15352669.html