mirror of
https://github.com/infiniflow/ragflow.git
synced 2025-08-28 02:16:57 +00:00
65 lines
1.7 KiB
TypeScript
65 lines
1.7 KiB
TypeScript
![]() |
import { InboxOutlined } from '@ant-design/icons';
|
||
|
import { Modal, Segmented, Upload, UploadProps, message } from 'antd';
|
||
|
import { useState } from 'react';
|
||
|
|
||
|
const { Dragger } = Upload;
|
||
|
|
||
|
const FileUploadModal = () => {
|
||
|
const [isModalOpen, setIsModalOpen] = useState(false);
|
||
|
|
||
|
const props: UploadProps = {
|
||
|
name: 'file',
|
||
|
multiple: true,
|
||
|
action: 'https://660d2bd96ddfa2943b33731c.mockapi.io/api/upload',
|
||
|
onChange(info) {
|
||
|
const { status } = info.file;
|
||
|
if (status !== 'uploading') {
|
||
|
console.log(info.file, info.fileList);
|
||
|
}
|
||
|
if (status === 'done') {
|
||
|
message.success(`${info.file.name} file uploaded successfully.`);
|
||
|
} else if (status === 'error') {
|
||
|
message.error(`${info.file.name} file upload failed.`);
|
||
|
}
|
||
|
},
|
||
|
onDrop(e) {
|
||
|
console.log('Dropped files', e.dataTransfer.files);
|
||
|
},
|
||
|
};
|
||
|
|
||
|
const handleOk = () => {
|
||
|
setIsModalOpen(false);
|
||
|
};
|
||
|
|
||
|
const handleCancel = () => {
|
||
|
setIsModalOpen(false);
|
||
|
};
|
||
|
|
||
|
return (
|
||
|
<>
|
||
|
<Modal
|
||
|
title="File upload"
|
||
|
open={isModalOpen}
|
||
|
onOk={handleOk}
|
||
|
onCancel={handleCancel}
|
||
|
>
|
||
|
<Segmented options={['Local uploads', 'S3 uploads']} block />
|
||
|
<Dragger {...props}>
|
||
|
<p className="ant-upload-drag-icon">
|
||
|
<InboxOutlined />
|
||
|
</p>
|
||
|
<p className="ant-upload-text">
|
||
|
Click or drag file to this area to upload
|
||
|
</p>
|
||
|
<p className="ant-upload-hint">
|
||
|
Support for a single or bulk upload. Strictly prohibited from
|
||
|
uploading company data or other banned files.
|
||
|
</p>
|
||
|
</Dragger>
|
||
|
</Modal>
|
||
|
</>
|
||
|
);
|
||
|
};
|
||
|
|
||
|
export default FileUploadModal;
|