summaryrefslogtreecommitdiffstats
path: root/models/export.js
diff options
context:
space:
mode:
Diffstat (limited to 'models/export.js')
-rw-r--r--models/export.js24
1 files changed, 22 insertions, 2 deletions
diff --git a/models/export.js b/models/export.js
index 7b22f45d..7243cf24 100644
--- a/models/export.js
+++ b/models/export.js
@@ -55,12 +55,32 @@ class Exporter {
result.cards = Cards.find(byBoard, noBoardId).fetch();
result.comments = CardComments.find(byBoard, noBoardId).fetch();
result.activities = Activities.find(byBoard, noBoardId).fetch();
- // for attachments we only export IDs and absolute url to original doc
+ // [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 = new Buffer(0);
+ // callback has the form function (err, res) {}
+ const readStream = doc.createReadStream();
+ readStream.on('data', function(chunk) {
+ buffer = Buffer.concat([buffer, chunk]);
+ });
+ readStream.on('error', function(err) {
+ callback(err, null);
+ });
+ readStream.on('end', function() {
+ // done
+ callback(null, buffer.toString('base64'));
+ });
+ };
+ const getBase64DataSync = Meteor.wrapAsync(getBase64Data);
result.attachments = Attachments.find(byBoard).fetch().map((attachment) => {
return {
_id: attachment._id,
cardId: attachment.cardId,
- url: FlowRouter.url(attachment.url()),
+ // url: FlowRouter.url(attachment.url()),
+ file: getBase64DataSync(attachment),
+ name: attachment.original.name,
+ type: attachment.original.type,
};
});