mirror of
https://github.com/infiniflow/ragflow.git
synced 2026-02-05 18:15:06 +08:00
feat: enable multi-file upload for chat and agent workflows (#12977)
### Closes: #12921 ### What problem does this PR solve? Previously, multi-file upload was not working correctly across the application: - **Chat**: UI displayed "Upload max 5 files" but only the first file was actually uploaded - **Agent conversational mode**: Frontend sent multiple files but backend only processed one - **Agent task-mode file inputs**: Explicitly limited to single file only This PR enables proper multi-file upload support for both chat and agent workflows, allowing users to upload and process multiple files (up to 5) as the UI originally suggested. **Changes:** - `web/src/pages/next-chats/hooks/use-upload-file.ts`: Process all files instead of only `files[0]` - `api/apps/canvas_app.py`: Handle multiple files via `files.getlist("file")` - `web/src/pages/agent/debug-content/uploader.tsx`: Allow up to 5 files with `multiple={true}` - `agent/component/begin.py` & `fillup.py`: Support file arrays while maintaining backward compatibility ### Type of change - [x] New Feature (non-breaking change which adds functionality)
This commit is contained in:
@ -64,11 +64,14 @@ class UserFillUp(ComponentBase):
|
||||
for k, v in kwargs.get("inputs", {}).items():
|
||||
if self.check_if_canceled("UserFillUp processing"):
|
||||
return
|
||||
if isinstance(v, dict) and v.get("type", "").lower().find("file") >=0:
|
||||
if isinstance(v, dict) and v.get("type", "").lower().find("file") >= 0:
|
||||
if v.get("optional") and v.get("value", None) is None:
|
||||
v = None
|
||||
else:
|
||||
v = FileService.get_files([v["value"]])
|
||||
file_value = v["value"]
|
||||
# Support both single file (backward compatibility) and multiple files
|
||||
files = file_value if isinstance(file_value, list) else [file_value]
|
||||
v = FileService.get_files(files)
|
||||
else:
|
||||
v = v.get("value")
|
||||
self.set_output(k, v)
|
||||
|
||||
Reference in New Issue
Block a user