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];
 | |
| }
 |