// 导入axios库,用于进行HTTP请求
import axios from 'axios'
// 定义一个名为downloadFile的异步函数,该函数接受一个文件URL和文件名作为参数,用于下载文件
const downloadFile = async (fileUrl, fileName) => {
// 使用axios发起一个GET请求,请求的URL为传入的fileUrl,并将响应类型设置为blob
const response = await axios({
method: 'get',
url: fileUrl,
responseType: 'blob',
})
// 将响应的数据(Blob对象)和文件名作为参数传递给downloadBlob函数,进行文件的下载操作
downloadBlob(response.data, fileName)
}
// 定义一个名为downloadBlob的函数,该函数接受一个Blob对象的内容和文件名作为参数,用于下载文件
const downloadBlob = (content, fileName) => {
// 创建一个新的Blob对象,其内容为传入的Blob对象的内容
const blob = new Blob([content])
// 创建一个隐藏的a元素,用于模拟点击下载文件
const a = document.createElement('a')
// 设置下载的文件名为传入的fileName
a.download = fileName
// 将a元素隐藏起来
a.style.display = 'none'
// 将Blob对象转换为URL,作为a元素的href属性,实现下载功能
a.href = URL.createObjectURL(blob)
// 将a元素添加到文档的body中
document.body.appendChild(a)
// 模拟点击a元素,触发浏览器的下载功能
a.click()
// 释放URL.createObjectURL()创建的URL对象,避免内存泄漏
URL.revokeObjectURL(a.href)
// 从文档的body中移除a元素
document.body.removeChild(a)
}
浏览器可预览文件下载方法封装
于 2023-12-28 17:24:21 首次发布