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