From a713c925304cff722bb42f6896b3f122263bc61e Mon Sep 17 00:00:00 2001 From: Hiroyasu Nishiyama Date: Thu, 7 Feb 2019 22:46:21 +0900 Subject: [PATCH] convert to buffer before write --- nodes/core/storage/50-file.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/nodes/core/storage/50-file.js b/nodes/core/storage/50-file.js index 04805af06..b9659b2cf 100644 --- a/nodes/core/storage/50-file.js +++ b/nodes/core/storage/50-file.js @@ -75,15 +75,16 @@ module.exports = function(RED) { if (typeof data === "boolean") { data = data.toString(); } if (typeof data === "number") { data = data.toString(); } if ((node.appendNewline) && (!Buffer.isBuffer(data))) { data += os.EOL; } + var buf = Buffer.from(data); if (node.overwriteFile === "true") { - var wstream = fs.createWriteStream(filename, { encoding:'utf8', flags:'w', autoClose:true }); + var wstream = fs.createWriteStream(filename, { encoding:'binary', flags:'w', autoClose:true }); node.wstream = wstream; wstream.on("error", function(err) { node.error(RED._("file.errors.writefail",{error:err.toString()}),msg); done(); }); wstream.on("open", function() { - wstream.end(data, function() { + wstream.end(buf, function() { node.send(msg); done(); }); @@ -117,7 +118,7 @@ module.exports = function(RED) { } } if (recreateStream) { - node.wstream = fs.createWriteStream(filename, { encoding:'utf8', flags:'a', autoClose:true }); + node.wstream = fs.createWriteStream(filename, { encoding:'binary', flags:'a', autoClose:true }); node.wstream.on("open", function(fd) { try { var stat = fs.statSync(filename); @@ -132,13 +133,13 @@ module.exports = function(RED) { } if (node.filename) { // Static filename - write and reuse the stream next time - node.wstream.write(data, function() { + node.wstream.write(buf, function() { node.send(msg); done(); }); } else { // Dynamic filename - write and close the stream - node.wstream.end(data, function() { + node.wstream.end(buf, function() { node.send(msg); delete node.wstream; delete node.wstreamIno;