diff --git a/packages/node_modules/@node-red/nodes/core/storage/10-file.html b/packages/node_modules/@node-red/nodes/core/storage/10-file.html
index 57d028ead..a0edf255d 100644
--- a/packages/node_modules/@node-red/nodes/core/storage/10-file.html
+++ b/packages/node_modules/@node-red/nodes/core/storage/10-file.html
@@ -1,5 +1,9 @@
@@ -299,6 +303,9 @@
name: {value:""},
filename: {value:"", validate: RED.validators.typedInput({ typeField: 'filenameType' }) },
filenameType: {value:"str"},
+ propertyOut: {value:"payload",required:true,
+ validate: RED.validators.typedInput({ type: 'msg', allowUndefined: true}),
+ label:RED._("node-red:common.label.propertyOut")},
format: {value:"utf8"},
chunk: {value:false},
sendError: {value: false},
@@ -345,6 +352,10 @@
types: [{label:RED._("node-red:file.label.path"), value:"str", icon:""}, "msg", "jsonata", "env"],
typeField: $("#node-input-filenameType")
});
+ if (this.propertyOut === undefined) {
+ $("#node-input-propertyOut").val("payload");
+ }
+ $("#node-input-propertyOut").typedInput({default:'msg',types:['msg']});
if(typeof node.filenameType == 'undefined') {
//existing node AND filenameType is not set - inplace (compatible) upgrade to new typedInput
if(node.filename == "") { //was using empty value to denote msg.filename - set typedInput to match
diff --git a/packages/node_modules/@node-red/nodes/core/storage/10-file.js b/packages/node_modules/@node-red/nodes/core/storage/10-file.js
index fea8c490e..aa3976626 100644
--- a/packages/node_modules/@node-red/nodes/core/storage/10-file.js
+++ b/packages/node_modules/@node-red/nodes/core/storage/10-file.js
@@ -286,6 +286,7 @@ module.exports = function(RED) {
RED.nodes.createNode(this,n);
this.filename = n.filename;
this.filenameType = n.filenameType;
+ this.propertyOut = n.propertyOut || "payload";
this.format = n.format;
this.chunk = false;
this.encoding = n.encoding || "none";
@@ -370,7 +371,7 @@ module.exports = function(RED) {
m.topic = msg.topic;
m.filename = msg.filename;
}
- m.payload = bits[i];
+ RED.util.setMessageProperty(m,node.propertyOut,bits[i]);
m.parts= {index:count, ch:ch, type:type, id:msg._msgid}
count += 1;
nodeSend(m);
@@ -386,7 +387,7 @@ module.exports = function(RED) {
m.topic = msg.topic;
m.filename = msg.filename;
}
- m.payload = chunk;
+ RED.util.setMessageProperty(m,node.propertyOut,chunk);
m.parts = {index:count, ch:ch, type:type, id:msg._msgid}
count += 1;
if (chunk.length < hwm) { // last chunk is smaller that high water mark = eof
@@ -405,7 +406,7 @@ module.exports = function(RED) {
node.error(err, msg);
if (node.sendError) {
var sendMessage = RED.util.cloneMessage(msg);
- delete sendMessage.payload;
+ delete sendMessage[node.propertyOut];
sendMessage.error = err;
nodeSend(sendMessage);
}
@@ -414,9 +415,10 @@ module.exports = function(RED) {
.on('end', function() {
if (node.chunk === false) {
if (node.format === "utf8") {
- msg.payload = decode(lines, node.encoding);
+ RED.util.setMessageProperty(m,node.propertyOut,decode(lines, node.encoding));
+ } else {
+ RED.util.setMessageProperty(m,node.propertyOut,lines);
}
- else { msg.payload = lines; }
nodeSend(msg);
}
else if (node.format === "lines") {
@@ -428,7 +430,7 @@ module.exports = function(RED) {
m.topic = msg.topic;
m.filename = msg.filename;
}
- m.payload = spare;
+ RED.util.setMessageProperty(m,node.propertyOut,spare);
m.parts = {
index: count,
count: count + 1,