Excel、Word等前端文件下载

// 根据url获取blob数据下载
export function doDownload(fileUrl: string, fileName: string) {
    console.log('output-> fileUrl, fileName', fileUrl, fileName)
    fetch(fileUrl)
        .then(response => {
            // 检查响应是否成功
            if (!response.ok) {
                throw new Error('Network response was not ok');
            }
            return response.blob();  // 获取响应的 Blob 数据
        })
        .then(blob => {
            // 创建一个下载链接
            const link:any = document.createElement('a');
            const url = URL.createObjectURL(blob);  // 将 Blob 数据转换为可下载的 URL
            link.href = url;
            link.download = fileName || fileUrl.split('/').pop();  // 默认使用文件名
            // 触发下载
            link.click();

            // 清理 URL 对象
            URL.revokeObjectURL(url);
            link.remove();
        })
        .catch(error => {
            console.error('File download failed:', error);
        });
}
// 下载文件
export function downloadFile(url, fileName, data) {
  axios({
    method: 'post',
    url,
    responseType: 'blob',
    data
  }).then((res) => {
    const blob = new Blob([res.data], {
      type: 'application/vnd.ms-excel;charset=utf8'
    })
    const objectUrl = URL.createObjectURL(blob)
    downloadFunction(objectUrl, fileName)
  })
}

export function downloadFunction(content, filename) {
  const a = document.createElement('a')
  a.href = content
  a.download = filename
  document.body.append(a)
  a.click()
  document.body.removeChild(a);
}

Usage

    //下载模板
    download() {
      const newUrl =
        window.parent.document.location.origin + `${this.moduleUrl}`
      downloadFunction(newUrl, `${dayjs().format('YYYYMMDDHHmmss')}_测试模板.xlsx`)
    },
posted @ 2023-06-03 23:55  Felix_Openmind  阅读(17)  评论(0)    收藏  举报
*{cursor: url(https://files-cdn.cnblogs.com/files/morango/fish-cursor.ico),auto;}