fix: Fixed the issue of error reporting when uploading files in the chat box #2897 (#2898)

### What problem does this PR solve?

fix: Fixed the issue of error reporting when uploading files in the chat
box #2897

### Type of change

- [x] Bug Fix (non-breaking change which fixes an issue)
- [ ] New Feature (non-breaking change which adds functionality)
- [ ] Documentation Update
- [ ] Refactoring
- [ ] Performance Improvement
- [ ] Other (please describe):
This commit is contained in:
balibabu 2024-10-18 17:21:12 +08:00 committed by GitHub
parent c760f058df
commit 526fcbbfde
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 37 additions and 70 deletions

View File

@ -52,11 +52,6 @@ const getFileIds = (fileList: UploadFile[]) => {
return ids;
};
const isUploadError = (file: UploadFile) => {
const retcode = get(file, 'response.retcode');
return typeof retcode === 'number' && retcode !== 0;
};
const isUploadSuccess = (file: UploadFile) => {
const retcode = get(file, 'response.retcode');
return typeof retcode === 'number' && retcode === 0;
@ -121,7 +116,7 @@ const MessageInput = ({
const creatingRet = await createConversationBeforeUploadDocument(
file.name,
);
if (creatingRet.retcode === 0) {
if (creatingRet?.retcode === 0) {
nextConversationId = creatingRet.data.id;
}
}
@ -133,6 +128,7 @@ const MessageInput = ({
});
return [...list];
});
const ret = await uploadAndParseDocument({
conversationId: nextConversationId,
fileList: [file],
@ -217,18 +213,12 @@ const MessageInput = ({
<Space>
{showUploadIcon && (
<Upload
// action={uploadUrl}
// fileList={fileList}
onPreview={handlePreview}
onChange={handleChange}
multiple={false}
// headers={{ [Authorization]: getAuthorization() }}
// data={{ conversation_id: conversationId }}
// method="post"
onRemove={handleRemove}
showUploadList={false}
beforeUpload={(file, fileList) => {
console.log('🚀 ~ beforeUpload:', fileList);
beforeUpload={() => {
return false;
}}
>
@ -283,17 +273,14 @@ const MessageInput = ({
<List.Item>
<Card className={styles.documentCard}>
<Flex gap={10} align="center">
{item.status === 'uploading' || !item.response ? (
{item.status === 'uploading' ? (
<Spin
indicator={
<LoadingOutlined style={{ fontSize: 24 }} spin />
}
/>
) : !getFileId(item) ? (
<InfoCircleOutlined
size={30}
// width={30}
></InfoCircleOutlined>
) : item.status === 'error' ? (
<InfoCircleOutlined size={30}></InfoCircleOutlined>
) : (
<FileIcon id={id} name={fileName}></FileIcon>
)}
@ -304,7 +291,7 @@ const MessageInput = ({
>
<b> {fileName}</b>
</Text>
{isUploadError(item) ? (
{item.status === 'error' ? (
t('uploadFailed')
) : (
<>

View File

@ -422,6 +422,7 @@ export const useUploadAndParseDocument = (uploadMethod: string) => {
conversationId: string;
fileList: UploadFile[];
}) => {
try {
const formData = new FormData();
formData.append('conversation_id', conversationId);
fileList.forEach((file: UploadFile) => {
@ -433,6 +434,9 @@ export const useUploadAndParseDocument = (uploadMethod: string) => {
}
const data = await chatService.uploadAndParseExternal(formData);
return data?.data;
} catch (error) {
console.log('🚀 ~ useUploadAndParseDocument ~ error:', error);
}
},
});

View File

@ -582,14 +582,18 @@ export const useSendButtonDisabled = (value: string) => {
export const useCreateConversationBeforeUploadDocument = () => {
const { setConversation } = useSetConversation();
const { dialogId } = useGetChatSearchParams();
const { getConversationIsNew } = useSetChatRouteParams();
const createConversationBeforeUploadDocument = useCallback(
async (message: string) => {
const isNew = getConversationIsNew();
if (isNew === 'true') {
const data = await setConversation(message, true);
return data;
}
},
[setConversation],
[setConversation, getConversationIsNew],
);
return {

View File

@ -43,3 +43,8 @@
}
}
}
.fileThumbnail {
display: inline-block;
max-width: 40px;
}

View File

@ -118,7 +118,11 @@ const MarkdownContent = ({
{documentId && (
<Flex gap={'small'}>
{fileThumbnail ? (
<img src={fileThumbnail} alt="" />
<img
src={fileThumbnail}
alt=""
className={styles.fileThumbnail}
/>
) : (
<SvgIcon
name={`file-icon/${fileExtension}`}

View File

@ -1,7 +1,6 @@
import api from '@/utils/api';
import registerServer from '@/utils/register-server';
import request from '@/utils/request';
import pureRequest from 'umi-request';
const {
create_kb,
@ -25,7 +24,6 @@ const {
retrieval_test,
document_rename,
document_run,
get_document_file,
document_upload,
web_crawl,
knowledge_graph,
@ -145,39 +143,4 @@ const methods = {
const kbService = registerServer<keyof typeof methods>(methods, request);
export const getDocumentFile = (documentId: string) => {
return pureRequest(get_document_file + '/' + documentId, {
responseType: 'blob',
method: 'get',
parseResponse: false,
// getResponse: true,
})
.then((res) => {
const x = res.headers.get('content-disposition');
console.info(res);
console.info(x);
return res.blob();
})
.then((res) => {
// const objectURL = URL.createObjectURL(res);
// let btn = document.createElement('a');
// btn.download = '文件名.pdf';
// btn.href = objectURL;
// btn.click();
// URL.revokeObjectURL(objectURL);
// btn = null;
return res;
})
.catch((err) => {
console.info(err);
});
};
export default kbService;