I am getting file size for single filename from my remote FTP using Advanced FTP node which is working fine.
But Now I wanted to get the file size of 7 files which needs to send to FTP node one by one and save it in an array and then show as a result of filenames and their size. I tried many logics but didn't work.
It is not feasible to get the list of directory every time and compare it with the require files available in my local directory.
I would be grateful if someone can suggest me a solution.
I suggest fs-ops to the rescue.
Demo Flow (use CTRL+I
to import)
[
{
"id": "44568381f16b99bc",
"type": "inject",
"z": "6429d72ae185e590",
"name": "",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "",
"payloadType": "date",
"x": 1210,
"y": 100,
"wires": [
[
"a742fc1c40ebb3fb"
]
]
},
{
"id": "87800c16b499cd24",
"type": "function",
"z": "6429d72ae185e590",
"name": "Summary of files",
"func": "\n/** @type {[Number]} */\nconst stats = msg.stats\n\nconst byteSize = stats.reduce(function (a, b) {\n return a + b.size\n}, 0);\n\n\nmsg.payload = {\n files: msg.files,\n stats: msg.stats,\n totalBytes: byteSize,\n totalKBs: (byteSize / 1000).toFixed(3)\n}\n\n\nreturn msg;\n",
"outputs": 1,
"timeout": 0,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 1320,
"y": 160,
"wires": [
[
"1f7871d95c546042"
]
]
},
{
"id": "a742fc1c40ebb3fb",
"type": "fs-ops-dir",
"z": "6429d72ae185e590",
"name": "",
"path": "c:/temp",
"pathType": "str",
"filter": "*.zip",
"filterType": "str",
"dir": "files",
"dirType": "msg",
"x": 1360,
"y": 100,
"wires": [
[
"21f451c9ccd00507"
]
]
},
{
"id": "21f451c9ccd00507",
"type": "fs-ops-stats",
"z": "6429d72ae185e590",
"name": "",
"path": "c:/temp",
"pathType": "str",
"filename": "files",
"filenameType": "msg",
"stats": "stats",
"sizeType": "msg",
"x": 1510,
"y": 100,
"wires": [
[
"87800c16b499cd24"
]
]
},
{
"id": "1f7871d95c546042",
"type": "debug",
"z": "6429d72ae185e590",
"name": "debug 4",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"statusVal": "",
"statusType": "auto",
"x": 1510,
"y": 160,
"wires": []
}
]
Thanks!
However using fs-ops I can access only the local files only. I want to get the size of the files from my remote server which can only possible by FTP nodes.
But now I have figured out another solution and is working fine.
One again thank you so much!