diff options
Diffstat (limited to 'server.js')
| -rw-r--r-- | server.js | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/server.js b/server.js new file mode 100644 index 0000000..a03e7b6 --- /dev/null +++ b/server.js @@ -0,0 +1,85 @@ +const express = require("express"); +const app = express(); +const formidable = require('formidable'); +const path = require("path"); +const hbs = require('express-handlebars'); +const PORT = 8000; +let FILES = [] +let ID = 1; + +app.set('views', path.join(__dirname, 'views')); +app.engine('hbs', hbs({ defaultLayout: 'main.hbs' })); +app.set('view engine', 'hbs'); +app.use(express.static("static")); +app.use(express.urlencoded({ + extended: true +})); + +app.get("/upload", (req, res) => { + res.render('upload.hbs', {}); +}) +app.post("/upload", (req, res) => { + let form = formidable({}); + form.uploadDir = __dirname + '/static/upload/' + form.keepExtensions = true + form.multiples = true + form.parse(req, (_, fields, files) => { + console.log(files) + if (Array.isArray(files.upl)) { + for (const f of files.upl) { + const file = {} + file.id = ID++; + file.img = getFileImg(f.type) + file.name = f.name; + file.size = f.size + file.type = f.type + file.path = f.path + file.date = f.lastModifiedDate.getTime() + FILES.push(file) + } + } else { + const file = {} + file.id = ID++; + file.img = getFileImg(files.upl.type) + file.name = files.upl.name; + file.size = files.upl.size + file.type = files.upl.type + file.path = files.upl.path + file.date = files.upl.lastModifiedDate.getTime() + FILES.push(file) + } + res.redirect("/upload") + }); +}) +app.get("/filemanager", (req, res) => { + res.render('filemanager.hbs', { FILES }); +}) +app.get("/delete", (req, res) => { + FILES = FILES.filter(f => f.id != req.query.id) + res.redirect("/filemanager") +}) +app.get("/remove-all", (req, res) => { + FILES = []; + res.redirect("/filemanager") +}) +app.get("/info", (req, res) => { + res.render('info.hbs', FILES.find(f => f.id == req.query.id)); +}) +app.get("/download", (req, res) => { + res.sendFile(FILES.find(f => f.id == req.query.id).path) +}) + +function getFileImg(type) { + if (type.includes("json")) + return "/json.svg"; + if (type.includes("text")) + return "/text.svg"; + if (type.includes("image")) + return "/image.svg"; + + return "/default.svg" +} + +app.listen(PORT, () => { + console.log("Server listening on port " + PORT); +}) |
