利用fetch请求实现文件下载

86 阅读1分钟
fetchRequest = (url, method, params) => {  const headers = {    'Content-Type': 'application/json'  };  if(localStorage.getItem('token') || sessionStorage.getItem('token') ) {    headers.token =  localStorage.getItem('token') || sessionStorage.getItem('token');  }  let fileName = '';  fetch(url,     {      method: method,       headers: headers,      body: params && JSON.stringify(params)    }    )    .then(res => {      if(res.status == 200){        const fileInfo = res.headers.get('content-disposition');        fileName = fileInfo?.split('filename=')?.[1];        fileName = decodeURI(fileName);        return res.blob();      }      else if(res.status === 401){//没有权限 未登录        top.location.href = '/portal/#/login'      }    })    .then(blob => {      let blobUrl = window.URL.createObjectURL(blob)      let a = document.createElement('a')      a.href = blobUrl;      a.download = fileName || '文件';      a.click()      window.URL.revokeObjectURL(url);      return true;    })}