45 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
		
		
			
		
	
	
			45 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
|  | import {request} from "@cqsjjb/jjb-common-lib/http"; | ||
|  | import { useState } from "react"; | ||
|  | 
 | ||
|  | /** | ||
|  |  * 导入文件 | ||
|  |  */ | ||
|  | export default function useImportFile() { | ||
|  |   // loading状态
 | ||
|  |   const [loading, setLoading] = useState(false); | ||
|  | 
 | ||
|  |   // 导入文件
 | ||
|  |   const importFile = (url, options) => { | ||
|  |     setLoading(true); | ||
|  | 
 | ||
|  |     return new Promise((resolve, reject) => { | ||
|  |       const { files = [], params = {} } = options | ||
|  |       const formData = new FormData(); | ||
|  | 
 | ||
|  |       // 将文件添加到formData中
 | ||
|  |       files.forEach((f) => { | ||
|  |         f.originFileObj && formData.append("file", f.originFileObj); | ||
|  |       }); | ||
|  | 
 | ||
|  |       // 将额外携带的参数添加到formData中
 | ||
|  |       Object.keys(params).forEach((key) => { | ||
|  |         formData.append(key, params[key]); | ||
|  |       }); | ||
|  | 
 | ||
|  |       // 发送请求
 | ||
|  |       request(url, "post", formData, { "Content-Type": "multipart/form-data" }) | ||
|  |         .then((res) => { | ||
|  |           resolve(res); | ||
|  |         }) | ||
|  |         .catch((err) => { | ||
|  |           reject(err); | ||
|  |         }) | ||
|  |         .finally(() => { | ||
|  |           setLoading(false); | ||
|  |         }); | ||
|  |     }); | ||
|  |   }; | ||
|  | 
 | ||
|  |   return [loading, importFile]; | ||
|  | } |