From 1e4540aa4de3f7cf31eee146d6f1a89eda7c2ff0 Mon Sep 17 00:00:00 2001 From: Walid LARABI Date: Mon, 3 Feb 2020 16:42:40 +0100 Subject: [PATCH] upload files --- .../server/controller/UploadController.js | 51 ++++++++----------- back-end/server/controller/index.js | 2 +- 2 files changed, 23 insertions(+), 30 deletions(-) diff --git a/back-end/server/controller/UploadController.js b/back-end/server/controller/UploadController.js index e9a57d3..3349a09 100644 --- a/back-end/server/controller/UploadController.js +++ b/back-end/server/controller/UploadController.js @@ -3,6 +3,8 @@ const multer = require('multer'); const GridFsStorage = require('multer-gridfs-storage'); const jwt = require('jsonwebtoken'); const config = require('../config'); +const ObjectID = require('mongodb').ObjectID; + let storage = new GridFsStorage({ url: config.DbConfig.DBURL, file: (req, file) => { @@ -43,7 +45,7 @@ module.exports.getFile = (req, res) => { //never be allowed in a production app. Sanitize the input. let fileName = req.body.text1; //Connect to the MongoDB client - MongoClient.connect(config.DbConfig.DBURL, function(err, client){ + MongoClient.connect(config.DbConfig.DBURL, async function(err, client){ if(err){ return res.status(500).send({title: 'Uploaded Error', message: 'MongoClient Connection error', error: err.errMsg}); } @@ -51,35 +53,26 @@ module.exports.getFile = (req, res) => { const collection = db.collection('plugins.files'); const collectionChunks = db.collection('plugins.chunks'); - collection.find({filename: fileName}).toArray(function(err, docs){ - if(err){ - return res.status(200).send({title: 'File error', message: 'Error finding file', error: err.errMsg}); - } - if(!docs || docs.length === 0){ - return res.status(200).send({title: 'Download Error', message: 'No file found'}); - }else{ - //Retrieving the chunks from the db - collectionChunks.find({files_id : docs[0]._id}).sort({n: 1}).toArray(function(err, chunks){ - if(err){ - return res.status(500).send({title: 'Download Error', message: 'Error retrieving chunks', error: err.errmsg}); - } - if(!chunks || chunks.length === 0){ - //No data found - return res.status(500).send({title: 'Download Error', message: 'No data found'}); - } - //Append Chunks - let fileData = []; - for(let i=0; i { + res.write(chunk); + }); + + downloadStream.on('error', () => { + res.sendStatus(404); + }); + + downloadStream.on('end', () => { + res.end(); }); }); }; \ No newline at end of file diff --git a/back-end/server/controller/index.js b/back-end/server/controller/index.js index a2979eb..81413e5 100644 --- a/back-end/server/controller/index.js +++ b/back-end/server/controller/index.js @@ -6,5 +6,5 @@ module.exports = { UserController : require("./UserController"), PluginController : require("./PluginController"), - UploadController : require("./UploadController") + UploadController : require("./UploadController"), }; \ No newline at end of file