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("下载失败");
 | 
						|
      });
 | 
						|
  } });
 | 
						|
}
 |