mirror of
https://github.com/csunny/DB-GPT.git
synced 2025-07-27 05:47:47 +00:00
Co-authored-by: Fangyin Cheng <staneyffer@gmail.com> Co-authored-by: 谨欣 <echo.cmy@antgroup.com> Co-authored-by: 严志勇 <yanzhiyong@tiansuixiansheng.com> Co-authored-by: yanzhiyong <932374019@qq.com>
54 lines
1.5 KiB
TypeScript
54 lines
1.5 KiB
TypeScript
import { ChatContext } from '@/app/chat-context';
|
|
import { apiInterceptors, uploadDocument } from '@/client/api';
|
|
|
|
import useSummary from '@/hooks/use-summary';
|
|
import { PaperClipOutlined } from '@ant-design/icons';
|
|
import { Button, Upload } from 'antd';
|
|
import { useContext, useState } from 'react';
|
|
|
|
interface IProps {
|
|
className?: string;
|
|
handleFinish?: (data: boolean) => void;
|
|
onUploadFinish: () => void;
|
|
}
|
|
export default function DocUpload(props: IProps) {
|
|
const { dbParam, setDocId } = useContext(ChatContext);
|
|
const { onUploadFinish, handleFinish } = props;
|
|
const summary = useSummary();
|
|
const [loading, setLoading] = useState<boolean>(false);
|
|
|
|
const handleUpload = async (data: any) => {
|
|
setLoading(true);
|
|
const formData = new FormData();
|
|
formData.append('doc_name', data.file.name);
|
|
formData.append('doc_file', data.file);
|
|
formData.append('doc_type', 'DOCUMENT');
|
|
|
|
const res = await apiInterceptors(uploadDocument(dbParam || 'default', formData));
|
|
|
|
if (!res[1]) {
|
|
setLoading(false);
|
|
return;
|
|
}
|
|
setDocId(res[1]);
|
|
onUploadFinish();
|
|
setLoading(false);
|
|
handleFinish?.(true);
|
|
await summary(res[1]);
|
|
handleFinish?.(false);
|
|
};
|
|
|
|
return (
|
|
<Upload
|
|
customRequest={handleUpload}
|
|
showUploadList={false}
|
|
maxCount={1}
|
|
multiple={false}
|
|
className='absolute z-10 top-2 left-2'
|
|
accept='.pdf,.ppt,.pptx,.xls,.xlsx,.doc,.docx,.txt,.md'
|
|
>
|
|
<Button loading={loading} size='small' shape='circle' icon={<PaperClipOutlined />}></Button>
|
|
</Upload>
|
|
);
|
|
}
|