文件下载(获取响应头里的数据 Content-Dispositi

2023-03-06  本文已影响0人  月下小酌_dbd5
//这里  我需要获取response里headers的Content-Disposition  所以后端需要设置如下:
response.setHeader( "Access-Control-Expose-Headers ", "Content-Disposition" );
image.png
//request 是axios封装好的
...
 export function download(id:number) {
  return request({
    url: '/omc-server/data/backupDataRecord/download/'+id,
    responseType:'blob',
    method: 'get'
  })
}

const onDownloadHandle = (node: BackupRecoveryRecord) => {
  systemBackupDownload(node.id).then(response => {
    let fileName = ''
    let temp = response.headers['content-disposition']
    let filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/;
    let matches = filenameRegex.exec(temp);
    if (matches != null && matches[1]) {
      fileName = matches[1].replace(/['"]/g, ''); //  解析出文件名 Backup-20230307152152.tgz
    }
    //调用成功,在html中创建一个a元素
    let aTag = document.createElement('a');
    //创建一个blob对象
    let blob: any = new Blob([response.data]);
    aTag.download = fileName + '.tgz'; // 下载的文件名
    aTag.href = URL.createObjectURL(blob);   //创建一个URL对象
    aTag.click();
    URL.revokeObjectURL(blob);          //释放URL对象
    
  }).catch(err => console.log(err))
}
image.png
上一篇 下一篇

猜你喜欢

热点阅读