封装文件下载

本文介绍了一个使用axios库实现的文件下载功能,createAnchorLink函数创建临时链接并触发下载,downloadAll函数则封装了请求处理和文件下载过程。适合处理各种类型文件并通过回调通知下载结果。
摘要由CSDN通过智能技术生成
import axios from '@/utils/utils'

const request = axios()

const createAnchorLink = (href,filename = '') => {
  const a = document.createElement('a');
  a.download = filename
  a.href = href
  document.body.appendChild(a)
  a.click()
  a.remove()
}

const downloadAll = ({
  url,
  filename,
  callback,
  type = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel",
  method = "POST",
  data
}) => {
  request({
    url,
    method,
    reponseType: "blob",
    getResponse:true,
    data
  }).then(res => {
    let blob = new Blob([res.data],{type})
    const blobUrl = window.URL.createObjectURL(blob)
    createAnchorLink(blobUrl,filename)
    window.URL.revokeObjectURL(blobUrl)
    callback & callback(true)
  }).catch(err => {
    callback & callback(false)
  })
}

export {downloadAll}
Axios是一个基于promise的HTTP库,可以用于浏览器和Node.js。它提供了从浏览器中创建HTTP请求的简单方式,以及在Node.js中发起HTTP请求的功能。 在使用Axios进行文件下载时,封装成TypeScript类是一种好的实践。首先,我们需要创建一个名为FileDownloadService的类,并导入Axios和FileSaver.js库(也可以使用其他库来保存文件)。 接下来,我们创建一个名为downloadFile的方法,该方法传递url和fileName两个参数,其中url指定文件的下载链接,fileName指定文件的名称。然后,我们使用Axios发起GET请求,并设置响应类型为blob。 在Axios响应后,我们使用FileSaver.js库将blob响应类型保存为文件,使用saveAs()方法,可以将文件保存到本地。 最后,我们可以在我们的应用程序的其他部分中调用FileDownloadService中的downloadFile函数,以下载文件。 以下是使用TypeScript的Axios封装文件下载的示例: import axios, { AxiosRequestConfig, AxiosResponse } from 'axios'; import { saveAs } from 'file-saver'; class FileDownloadService { public downloadFile = async (url: string, fileName: string) => { try { const response: AxiosResponse = await axios.get(url, { responseType: 'blob', }); const blob = new Blob([response.data], { type: response.headers['content-type'] }); saveAs(blob, fileName); } catch (error) { console.error(error); } }; } export default new FileDownloadService(); 这是一个简单的Axios和TypeScript的文件下载示例。在实际的应用程序中,可能需要添加更多处理逻辑和错误检查语句,以确保下载文件的稳定性和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值