diff --git a/packages/components/nodes/documentloaders/File/File.ts b/packages/components/nodes/documentloaders/File/File.ts index d3049553f..53f5be5ea 100644 --- a/packages/components/nodes/documentloaders/File/File.ts +++ b/packages/components/nodes/documentloaders/File/File.ts @@ -32,7 +32,7 @@ class File_DocumentLoaders implements INode { this.type = 'Document' this.icon = 'file.svg' this.category = 'Document Loaders' - this.description = `A generic file loader that can load txt, json, csv, docx, pdf, and other files` + this.description = `A generic file loader that can load different file types` this.baseClasses = [this.type] this.inputs = [ { @@ -214,6 +214,11 @@ class File_DocumentLoaders implements INode { json: (blob) => new JSONLoader(blob), jsonl: (blob) => new JSONLinesLoader(blob, '/' + pointerName.trim()), txt: (blob) => new TextLoader(blob), + html: (blob) => new TextLoader(blob), + css: (blob) => new TextLoader(blob), + js: (blob) => new TextLoader(blob), + xml: (blob) => new TextLoader(blob), + md: (blob) => new TextLoader(blob), csv: (blob) => new CSVLoader(blob), xls: (blob) => new LoadOfSheet(blob), xlsx: (blob) => new LoadOfSheet(blob), @@ -301,6 +306,8 @@ const getOverrideFileInputs = (nodeData: INodeData) => { const jsonlinesFileBase64 = nodeData.inputs?.jsonlinesFile as string const docxFileBase64 = nodeData.inputs?.docxFile as string const yamlFileBase64 = nodeData.inputs?.yamlFile as string + const excelFileBase64 = nodeData.inputs?.excelFile as string + const powerpointFileBase64 = nodeData.inputs?.powerpointFile as string const removePrefix = (storageFile: string): string[] => { const fileName = storageFile.replace('FILE-STORAGE::', '') @@ -333,6 +340,12 @@ const getOverrideFileInputs = (nodeData: INodeData) => { if (yamlFileBase64) { files.push(...removePrefix(yamlFileBase64)) } + if (excelFileBase64) { + files.push(...removePrefix(excelFileBase64)) + } + if (powerpointFileBase64) { + files.push(...removePrefix(powerpointFileBase64)) + } return files.length ? `FILE-STORAGE::${JSON.stringify(files)}` : '' } diff --git a/packages/components/src/utils.ts b/packages/components/src/utils.ts index 1f24fb813..5947d4fa1 100644 --- a/packages/components/src/utils.ts +++ b/packages/components/src/utils.ts @@ -1070,7 +1070,17 @@ export const mapMimeTypeToInputField = (mimeType: string) => { case 'text/jsonl': return 'jsonlinesFile' case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': + case 'application/msword': { return 'docxFile' + } + case 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': + case 'application/vnd.ms-excel': { + return 'excelFile' + } + case 'application/vnd.openxmlformats-officedocument.presentationml.presentation': + case 'application/vnd.ms-powerpoint': { + return 'powerpointFile' + } case 'application/vnd.yaml': case 'application/x-yaml': case 'text/vnd.yaml': @@ -1091,6 +1101,19 @@ export const mapMimeTypeToExt = (mimeType: string) => { switch (mimeType) { case 'text/plain': return 'txt' + case 'text/html': + return 'html' + case 'text/css': + return 'css' + case 'text/javascript': + case 'application/javascript': + return 'js' + case 'text/xml': + case 'application/xml': + return 'xml' + case 'text/markdown': + case 'text/x-markdown': + return 'md' case 'application/pdf': return 'pdf' case 'application/json': @@ -1109,6 +1132,10 @@ export const mapMimeTypeToExt = (mimeType: string) => { return 'xls' case 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': return 'xlsx' + case 'application/vnd.ms-powerpoint': + return 'ppt' + case 'application/vnd.openxmlformats-officedocument.presentationml.presentation': + return 'pptx' default: return '' } diff --git a/packages/server/src/utils/createAttachment.ts b/packages/server/src/utils/createAttachment.ts index d1e7ceaaa..1746cf9c6 100644 --- a/packages/server/src/utils/createAttachment.ts +++ b/packages/server/src/utils/createAttachment.ts @@ -172,7 +172,7 @@ export const createFileAttachment = async (req: Request) => { content }) } catch (error) { - throw new Error(`Failed operation: createFileAttachment - ${getErrorMessage(error)}`) + throw new Error(`Failed createFileAttachment: ${file.originalname} (${file.mimetype} - ${getErrorMessage(error)}`) } } } diff --git a/packages/ui/src/ui-component/extended/FileUpload.jsx b/packages/ui/src/ui-component/extended/FileUpload.jsx index 2fdda35c1..2555ee147 100644 --- a/packages/ui/src/ui-component/extended/FileUpload.jsx +++ b/packages/ui/src/ui-component/extended/FileUpload.jsx @@ -23,18 +23,20 @@ const message = `Uploaded files will be parsed as strings and sent to the LLM. I Refer docs for more details.` const availableFileTypes = [ - { name: 'CSS', ext: 'text/css' }, - { name: 'CSV', ext: 'text/csv' }, - { name: 'HTML', ext: 'text/html' }, - { name: 'JSON', ext: 'application/json' }, - { name: 'YAML', ext: 'application/x-yaml' }, - { name: 'Markdown', ext: 'text/markdown' }, - { name: 'PDF', ext: 'application/pdf' }, - { name: 'SQL', ext: 'application/sql' }, - { name: 'Text File', ext: 'text/plain' }, - { name: 'XML', ext: 'application/xml' }, - { name: 'DOC', ext: 'application/msword' }, - { name: 'DOCX', ext: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' } + { name: 'CSS', ext: 'text/css', extension: '.css' }, + { name: 'CSV', ext: 'text/csv', extension: '.csv' }, + { name: 'HTML', ext: 'text/html', extension: '.html' }, + { name: 'JSON', ext: 'application/json', extension: '.json' }, + { name: 'Markdown', ext: 'text/markdown', extension: '.md' }, + { name: 'YAML', ext: 'application/x-yaml', extension: '.yaml' }, + { name: 'PDF', ext: 'application/pdf', extension: '.pdf' }, + { name: 'SQL', ext: 'application/sql', extension: '.sql' }, + { name: 'Text File', ext: 'text/plain', extension: '.txt' }, + { name: 'XML', ext: 'application/xml', extension: '.xml' }, + { name: 'DOC', ext: 'application/msword', extension: '.doc' }, + { name: 'DOCX', ext: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', extension: '.docx' }, + { name: 'XLSX', ext: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', extension: '.xlsx' }, + { name: 'PPTX', ext: 'application/vnd.openxmlformats-officedocument.presentationml.presentation', extension: '.pptx' } ] const FileUpload = ({ dialogProps }) => { @@ -222,30 +224,45 @@ const FileUpload = ({ dialogProps }) => { onChange={handleAllowedFileTypesChange} /> ))} - - PDF Usage - - - } label='One document per page' /> - } label='One document per file' /> - - - + {allowedFileTypes.includes('application/pdf') && fullFileUpload && ( + + PDF Configuration - - - + + PDF Usage + + + } label='One document per page' /> + } label='One document per file' /> + + + + + + + + + )} Save