-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.js
115 lines (96 loc) · 2.43 KB
/
server.js
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
const express = require('express');
const hbs = require('express-handlebars');
var formidable = require('formidable');
const path = require('path');
const app = express();
const port = process.env.PORT || 8000;
let manager = [];
let track = 0;
app.set('views', path.join(__dirname, 'views'));
app.engine('hbs', hbs({ defaultLayout: 'main.hbs' }));
app.set('view engine', 'hbs');
app.use(express.static(path.join(__dirname, 'static')));
app.get('/', (req, res) => {
res.render('upload.hbs');
});
app.get('/manager', (req, res) => {
const context = {
files: [],
};
manager.map((file, index) => {
let imgPath = '';
switch (file.type) {
case 'image/png':
imgPath = 'png.svg';
break;
case 'video/mp4':
imgPath = 'mp4.svg';
break;
case 'application/zip':
imgPath = 'zip.svg';
break;
default:
imgPath = 'idk.svg';
break;
}
context.files.push({
id: file.ID,
name: file.name,
size: file.size,
type: file.type,
img: imgPath,
});
});
res.render('filemanager.hbs', context);
});
app.get('/info/:id', (req, res) => {
const file = manager.find((file) => file.ID === parseInt(req.params.id));
const context = {
id: file.ID,
name: file.name,
path: file.path,
size: file.size,
type: file.type,
savedate: new Date(file.lastModifiedDate).getTime(),
};
res.render('info.hbs', context);
});
app.get('/down/:id', (req, res) => {
const file = manager.find((file) => file.ID === parseInt(req.params.id));
res.sendFile(file.path);
});
app.get('/delete', (req, res) => {
manager = [];
res.redirect('/manager');
});
app.post('/file', (req, res) => {
let form = formidable({});
form.uploadDir = __dirname + '/static/upload/'; // folder do zapisu zdjęcia
form.keepExtensions = true;
form.multiples = true;
form.parse(req, function (err, fields, files) {
if (Array.isArray(files.files)) {
files.files.map((file) => {
manager.push({
ID: track,
...file,
});
track++;
});
} else {
manager.push({
ID: track,
...files.files,
});
track++;
}
res.render('upload.hbs');
});
});
app.get('/delete/:id', (req, res) => {
manager = manager.filter((file) => file.ID !== parseInt(req.params.id));
res.redirect('/manager');
});
app.listen(port, () => {
console.log(`Server started on ${port}`);
});