zy-react-library/hooks/useDownloadFile/index.js

37 lines
1.0 KiB
JavaScript
Raw Permalink Normal View History

2025-10-22 14:43:42 +08:00
import { message, Modal } from "antd";
import { getFileName, getFileSuffix, getFileUrl } from "../../utils/index.js";
/**
* 下载文件
*/
export default function useDownloadFile(url, name) {
if (!url)
throw new Error("没有下载地址");
Modal.confirm({ title: "提示", content: "确定要下载此文件吗?", onOk: () => {
const fileUrl = getFileUrl();
if (name) {
if (!getFileSuffix(url))
name = name + getFileSuffix(url);
}
else {
name = getFileName(url);
}
fetch(!url.includes(fileUrl) ? fileUrl + url : url)
.then(res => res.blob())
.then((blob) => {
const a = document.createElement("a");
document.body.appendChild(a);
a.style.display = "none";
const url = window.URL.createObjectURL(blob);
a.href = url;
a.download = `${name}`;
a.click();
document.body.removeChild(a);
window.URL.revokeObjectURL(url);
})
.catch(() => {
message.error("下载失败");
});
} });
}