Feat: pptx and xlsx loader (#1118)

* perf: plan tip

* perf: upload size controller

* feat: add image ttl index

* feat: new upload file ux

* remove file

* feat: support read pptx

* feat: support xlsx

* fix: rerank docker flie
This commit is contained in:
Archer
2024-04-01 19:01:26 +08:00
committed by GitHub
parent f9d266a6af
commit 21288d1736
90 changed files with 2707 additions and 1678 deletions

View File

@@ -1,4 +1,4 @@
import { GET, POST, PUT, DELETE } from '@/web/common/api/request';
import { GET, POST } from '@/web/common/api/request';
import type { UploadImgProps } from '@fastgpt/global/common/file/api.d';
import { AxiosProgressEvent } from 'axios';
@@ -8,10 +8,16 @@ export const postUploadFiles = (
data: FormData,
onUploadProgress: (progressEvent: AxiosProgressEvent) => void
) =>
POST<string[]>('/common/file/upload', data, {
POST<string>('/common/file/upload', data, {
timeout: 480000,
onUploadProgress,
headers: {
'Content-Type': 'multipart/form-data; charset=utf-8'
}
});
export const getPreviewFileContent = (data: { fileId: string; csvFormat: boolean }) =>
POST<{
previewContent: string;
totalLength: number;
}>('/common/file/previewContent', data);

View File

@@ -7,13 +7,13 @@ import { compressBase64Img, type CompressImgProps } from '@fastgpt/web/common/fi
/**
* upload file to mongo gridfs
*/
export const uploadFiles = ({
files,
export const uploadFile2DB = ({
file,
bucketName,
metadata = {},
percentListen
}: {
files: File[];
file: File;
bucketName: `${BucketNameEnum}`;
metadata?: Record<string, any>;
percentListen?: (percent: number) => void;
@@ -21,9 +21,7 @@ export const uploadFiles = ({
const form = new FormData();
form.append('metadata', JSON.stringify(metadata));
form.append('bucketName', bucketName);
files.forEach((file) => {
form.append('file', file, encodeURIComponent(file.name));
});
form.append('file', file, encodeURIComponent(file.name));
return postUploadFiles(form, (e) => {
if (!e.total) return;

View File

@@ -23,14 +23,18 @@ export const useSelectFile = (props?: {
accept={fileType}
multiple={multiple}
onChange={(e) => {
if (!e.target.files || e.target.files?.length === 0) return;
if (e.target.files.length > maxCount) {
return toast({
const files = e.target.files;
if (!files || files?.length === 0) return;
let fileList = Array.from(files);
if (fileList.length > maxCount) {
toast({
status: 'warning',
title: t('common.file.Select file amount limit', { max: maxCount })
});
fileList = fileList.slice(0, maxCount);
}
onSelect(Array.from(e.target.files), openSign.current);
onSelect(fileList, openSign.current);
}}
/>
</Box>

View File

@@ -77,15 +77,15 @@ export const useSpeech = (props?: OutLinkChatAuthProps) => {
let options = {};
if (MediaRecorder.isTypeSupported('audio/webm')) {
options = { type: 'audio/webm' };
} else if (MediaRecorder.isTypeSupported('video/mp4')) {
options = { type: 'video/mp4' };
} else if (MediaRecorder.isTypeSupported('video/mp3')) {
options = { type: 'video/mp3' };
} else {
console.error('no suitable mimetype found for this device');
}
const blob = new Blob(chunks, options);
const duration = Math.round((Date.now() - startTimestamp.current) / 1000);
formData.append('file', blob, 'recording.mp4');
formData.append('file', blob, 'recording.mp3');
formData.append(
'data',
JSON.stringify({