37 lines
1.0 KiB
JavaScript
37 lines
1.0 KiB
JavaScript
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("下载失败");
|
|
});
|
|
} });
|
|
}
|