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