mirror of
https://github.com/langgenius/dify.git
synced 2026-05-10 14:14:17 +08:00
The previous nested folder upload flow bypassed the backend batch-upload contract when parentId was set. Instead of creating the whole metadata tree in one backend operation, the frontend recursively called createFolder/getFileUploadUrl for each node. That introduced two regressions for uploads into subfolders: - consistency regression: mid-sequence failures could leave partially created folder trees under the destination folder - performance regression: metadata creation degraded from a single batch request to O(files + folders) round-trips before file bytes were uploaded This change moves nested uploads back to the original batch semantics: - add optional parent_id support to app asset batch-upload payload - create the whole nested tree under the target parent in AppAssetService.batch_create_from_tree - pass parentId through useBatchUpload instead of using per-node createFolder/getFileUploadUrl calls - remove the now-unnecessary useBatchUploadOperation wrapper - add a backend unit test covering batch tree creation under an existing parent folder After this change, both root uploads and subfolder uploads use the same single-request metadata creation path, preserving atomic tree creation semantics and avoiding avoidable metadata round-trips. |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| advanced_prompt_template.py | ||
| agent.py | ||
| annotation.py | ||
| app_asset.py | ||
| app_import.py | ||
| app.py | ||
| audio.py | ||
| completion.py | ||
| conversation_variables.py | ||
| conversation.py | ||
| error.py | ||
| generator.py | ||
| mcp_server.py | ||
| message.py | ||
| model_config.py | ||
| ops_trace.py | ||
| site.py | ||
| skills.py | ||
| statistic.py | ||
| workflow_app_log.py | ||
| workflow_comment.py | ||
| workflow_draft_variable.py | ||
| workflow_run.py | ||
| workflow_statistic.py | ||
| workflow_trigger.py | ||
| workflow.py | ||
| wraps.py | ||