From eb7d5934ef8bc6e999d6de4c0b8025ce175df5dd Mon Sep 17 00:00:00 2001 From: Jon Date: Tue, 10 Dec 2024 14:33:09 +0000 Subject: [PATCH] fix(FTP Node): Fix issue with creating folders on rename (#9340) --- packages/nodes-base/nodes/Ftp/Ftp.node.ts | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/nodes-base/nodes/Ftp/Ftp.node.ts b/packages/nodes-base/nodes/Ftp/Ftp.node.ts index 99d9e4b77d..d9c8a94b42 100644 --- a/packages/nodes-base/nodes/Ftp/Ftp.node.ts +++ b/packages/nodes-base/nodes/Ftp/Ftp.node.ts @@ -752,10 +752,20 @@ export class Ftp implements INodeType { if (operation === 'rename') { const oldPath = this.getNodeParameter('oldPath', i) as string; - const newPath = this.getNodeParameter('newPath', i) as string; + const options = this.getNodeParameter('options', i); - await ftp!.rename(oldPath, newPath); + try { + await ftp!.rename(oldPath, newPath); + } catch (error) { + if ([451, 550].includes(error.code) && options.createDirectories) { + const dirPath = newPath.replace(basename(newPath), ''); + await ftp!.mkdir(dirPath, true); + await ftp!.rename(oldPath, newPath); + } else { + throw new NodeApiError(this.getNode(), error as JsonObject); + } + } const executionData = this.helpers.constructExecutionMetaData( [{ json: { success: true } }], { itemData: { item: i } },