-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.js
More file actions
71 lines (57 loc) · 1.95 KB
/
server.js
File metadata and controls
71 lines (57 loc) · 1.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
const express = require('express');
const app = express();
const multer = require('multer');
const mongoose = require('mongoose');
const Grid = require('gridfs-stream');
app.use(express.urlencoded({ extended: true }));
const PORT = 3001;
const MONGO_URI = 'mongodb://localhost:27017/node-task'
global.gfs;
const { GridFsStorage } = require('multer-gridfs-storage');
const storage = new GridFsStorage({
url: MONGO_URI,
file: (req, file) => {
return {
filename: req.body.myInput + '_' + Date.now()
};
}
});
const upload = multer({ storage });
app.get('/download/:filename', (req, res, next) => {
const fileId = mongoose.Types.ObjectId(req.params.filename);
gfs.files.find({ _id: fileId }).toArray(function (err, files) {
if (err)
return res.status(400).json('File Not Found');
if (files.length > 0) {
res.set('Content-Type', files[0].contentType);
res.set('Content-Disposition', "inline; filename=" + files[0].filename);
const read_stream = gfs.createReadStream({ _id: fileId });
read_stream.pipe(res);
} else {
res.status(400).json('File Not Found');
}
});
});
app.get('/', function (req, res) {
res.sendFile(__dirname + '/index.html');
});
app.post('/uploadfile', upload.single('myFile'), (req, res, next) => {
const file = req.file;
if (!file) {
const error = new Error('Please upload a file')
error.httpStatusCode = 400;
return next(error);
}
res.render('response', { fileId: `/download/${file.id.toString()}`, fileName: file.filename });
});
const conn = mongoose.createConnection(MONGO_URI, { useNewUrlParser: true, useUnifiedTopology: true });
conn.once('open', function () {
global.gfs = Grid(conn.db, mongoose.mongo);
app.set('view engine', 'ejs');
app.listen(PORT, function () {
console.log(`Server started at ${PORT} port`)
})
});
conn.on('error', function (e) {
console.error(e);
});