diff options
author | Lauri Ojansivu <x@xet7.org> | 2020-01-23 15:11:21 +0200 |
---|---|---|
committer | Lauri Ojansivu <x@xet7.org> | 2020-01-23 15:11:21 +0200 |
commit | 6ef532d18740acd1e9427e79b6c74d3ca6d5ea11 (patch) | |
tree | 81b63e0b2acd2f58183434ae6543c0c3a03b7579 | |
parent | c610ba0976e202464593563ca225eef02ac10a46 (diff) | |
parent | f868b3d1f977824ca1dc9fc45f0251ed4019b21e (diff) | |
download | wekan-6ef532d18740acd1e9427e79b6c74d3ca6d5ea11.tar.gz wekan-6ef532d18740acd1e9427e79b6c74d3ca6d5ea11.tar.bz2 wekan-6ef532d18740acd1e9427e79b6c74d3ca6d5ea11.zip |
Merge branch 'hotfix-export-board' of https://github.com/izadpoor/wekan into izadpoor-hotfix-export-board
-rw-r--r-- | models/export.js | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/models/export.js b/models/export.js index cd72a6a4..339123c8 100644 --- a/models/export.js +++ b/models/export.js @@ -24,7 +24,6 @@ if (Meteor.isServer) { JsonRoutes.add('get', '/api/boards/:boardId/export', function(req, res) { const boardId = req.params.boardId; let user = null; - const loginToken = req.query.authToken; if (loginToken) { const hashToken = Accounts._hashLoginToken(loginToken); @@ -35,7 +34,6 @@ if (Meteor.isServer) { Authentication.checkUserId(req.userId); user = Users.findOne({ _id: req.userId, isAdmin: true }); } - const exporter = new Exporter(boardId); if (exporter.canExport(user)) { JsonRoutes.sendResult(res, { @@ -137,8 +135,11 @@ export class Exporter { // [Old] for attachments we only export IDs and absolute url to original doc // [New] Encode attachment to base64 + const getBase64Data = function(doc, callback) { - let buffer = Buffer.from(0); + let buffer = Buffer.allocUnsafe(0); + buffer.fill(0); + // callback has the form function (err, res) {} const tmpFile = path.join( os.tmpdir(), @@ -149,14 +150,16 @@ export class Exporter { readStream.on('data', function(chunk) { buffer = Buffer.concat([buffer, chunk]); }); + readStream.on('error', function(err) { - callback(err, null); + callback(null, null); }); readStream.on('end', function() { // done fs.unlink(tmpFile, () => { //ignored }); + callback(null, buffer.toString('base64')); }); readStream.pipe(tmpWriteable); @@ -165,11 +168,14 @@ export class Exporter { result.attachments = Attachments.find(byBoard) .fetch() .map(attachment => { + let filebase64 = null; + filebase64 = getBase64DataSync(attachment); + return { _id: attachment._id, cardId: attachment.cardId, - // url: FlowRouter.url(attachment.url()), - file: getBase64DataSync(attachment), + //url: FlowRouter.url(attachment.url()), + file: filebase64, name: attachment.original.name, type: attachment.original.type, }; |