From f53c624b0f6c6ebcc20c378a153e5cda8d73463c Mon Sep 17 00:00:00 2001 From: "Sam X. Chen" Date: Fri, 11 Oct 2019 11:01:10 -0400 Subject: Buf Fix #2093: the broken should be prior to file attachment feature introduced --- models/export.js | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'models') diff --git a/models/export.js b/models/export.js index a69be970..3f4c8590 100644 --- a/models/export.js +++ b/models/export.js @@ -50,12 +50,18 @@ if (Meteor.isServer) { }); } +// exporter maybe is broken since Gridfs introduced, add fs and path + export class Exporter { constructor(boardId) { this._boardId = boardId; } build() { + const fs = Npm.require('fs'); + const os = Npm.require('os'); + const path = Npm.require('path'); + const byBoard = { boardId: this._boardId }; const byBoardNoLinked = { boardId: this._boardId, @@ -134,6 +140,9 @@ export class Exporter { const getBase64Data = function(doc, callback) { let buffer = new Buffer(0); // callback has the form function (err, res) {} + const tmpWriteable = fs.createWriteStream( + path.join(os.tmpdir(), `tmpexport${process.pid}`), + ); const readStream = doc.createReadStream(); readStream.on('data', function(chunk) { buffer = Buffer.concat([buffer, chunk]); @@ -145,6 +154,7 @@ export class Exporter { // done callback(null, buffer.toString('base64')); }); + readStream.pipe(tmpWriteable); }; const getBase64DataSync = Meteor.wrapAsync(getBase64Data); result.attachments = Attachments.find(byBoard) -- cgit v1.2.3-1-g7c22