50 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
import { request } from "@cqsjjb/jjb-common-lib/http";
 | 
						|
import { useState } from "react";
 | 
						|
 | 
						|
/**
 | 
						|
 * 导入文件
 | 
						|
 */
 | 
						|
export default function useImportFile(returnType = "object") {
 | 
						|
  // loading状态
 | 
						|
  const [loading, setLoading] = useState(false);
 | 
						|
 | 
						|
  // 导入文件
 | 
						|
  const importFile = (url, options) => {
 | 
						|
    setLoading(true);
 | 
						|
 | 
						|
    return new Promise((resolve, reject) => {
 | 
						|
      if (!url)
 | 
						|
        return reject(new Error("请传入 url"));
 | 
						|
 | 
						|
      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);
 | 
						|
        });
 | 
						|
    });
 | 
						|
  };
 | 
						|
 | 
						|
  if (returnType === "array")
 | 
						|
    return [loading, importFile];
 | 
						|
  return { loading, importFile };
 | 
						|
}
 |