mirror of
https://github.com/langgenius/dify.git
synced 2026-05-06 02:18:08 +08:00
fix(app-assets): restore atomic batch upload for nested folder targets
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.
This commit is contained in:
@ -271,6 +271,7 @@ export const useBatchUpload = () => {
|
||||
appId,
|
||||
tree,
|
||||
files,
|
||||
parentId,
|
||||
onProgress,
|
||||
}: {
|
||||
appId: string
|
||||
@ -281,7 +282,7 @@ export const useBatchUpload = () => {
|
||||
}): Promise<BatchUploadNodeOutput[]> => {
|
||||
const response = await consoleClient.appAsset.batchUpload({
|
||||
params: { appId },
|
||||
body: { children: tree },
|
||||
body: { children: tree, parent_id: parentId },
|
||||
})
|
||||
|
||||
const uploadTasks: Array<{ path: string, file: File, url: string }> = []
|
||||
|
||||
Reference in New Issue
Block a user