根据文件类型进行下载, 文档/图片
直接调用loadFile方法即可 , 参数1是文件路径 或者 请求文件的URL (2者都可以) , 参数2是文件名
建议用于封装全局下载文件的函数
function loadFile(fileUrl, fileName) {
if (isImageByExtension(fileUrl)) {
try {
downloadRes(fileUrl, fileName)
} catch (error) {
downloadFile(fileUrl, fileName)
}
} else {
downloadRes(fileUrl, fileName)
}
}
const downloadFile = (fileUrl, fileName) => {
const link = document.createElement('a');
link.href = fileUrl;
link.download = fileName;
link.target = '_blank';
link.style.display = 'none';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
const downloadRes = async (url, name) => {
let response = await fetch(url)
let blob = await response.blob()
let objectUrl = window.URL.createObjectURL(blob)
let a = document.createElement('a')
a.href = objectUrl
a.download = name
a.click()
a.remove()
}
function isImageByExtension(filename:string) {
const imageExtensions = ['.jpg', '.jpeg', '.png', '.gif', '.bmp'];
const extension = filename.substring(filename.lastIndexOf('.')).toLowerCase();
return imageExtensions.includes(extension);
}