From 7877729100d7e4b63be3d79e9363bc1ba30f9884 Mon Sep 17 00:00:00 2001 From: Raphix Date: Thu, 23 Mar 2023 18:57:54 +0100 Subject: [PATCH] Add Download Component for Files Component --- app.js | 2 + public/templates/files.html | 35 +++++++++++++- routes/download.js | 48 +++++++++++++++++++ .../0cee5da6-6812-49d8-97f5-2df5c1d78191.json | 2 +- 4 files changed, 85 insertions(+), 2 deletions(-) create mode 100644 routes/download.js diff --git a/app.js b/app.js index 10fe7a4..82806d4 100644 --- a/app.js +++ b/app.js @@ -20,6 +20,7 @@ var uploadRouter = require('./routes/upload'); var userManagerRouter = require('./routes/usermanager'); var linkRouter = require('./routes/link'); var fileRouter = require("./routes/filemanager") +var downloadRouter = require("./routes/download") var app = express(); @@ -47,6 +48,7 @@ app.use('/upload', uploadRouter) app.use('/usermanager', userManagerRouter) app.use('/link', linkRouter) app.use("/filemanager", fileRouter) +app.use("/download", downloadRouter) // catch 404 and forward to error handler diff --git a/public/templates/files.html b/public/templates/files.html index 8e55fca..5602d96 100644 --- a/public/templates/files.html +++ b/public/templates/files.html @@ -478,7 +478,7 @@ - fileExplorerList.push('

' + icon+ ' ' + file.name + '

Dernière édition : ' + lastedition + '

Taille : ' + file.size + ' octet(s)

') + fileExplorerList.push('

' + icon+ ' ' + file.name + '

Dernière édition : ' + lastedition + '

Taille : ' + file.size + ' octet(s)

') dialogExlorerList.push('

Renommer un fichier

Nouveau lien :

') } @@ -568,6 +568,39 @@ }) + } else { + + const downloadBtn = document.getElementById(file.name + "_download") + + downloadBtn.addEventListener("click", () => { + + fiInfo.innerHTML = "" + + fetch('/download', { + method: 'GET', + redirect: 'follow', + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'FileRequest': file.fileDirectory + } + }).then(resp => resp.blob()) + .then(blob => { + const url = window.URL.createObjectURL(blob); + const a = document.createElement("a"); + a.style.display = "none"; + a.href = url; + a.download = file.name; + document.body.appendChild(a); + a.click(); + window.URL.revokeObjectURL(url); + + }) + .catch(() => fiInfo.innerHTML = "Une erreur est survenue lors du téléchargement"); + + + + }) } deleteBtn.addEventListener("click", () => { diff --git a/routes/download.js b/routes/download.js new file mode 100644 index 0000000..0f4e185 --- /dev/null +++ b/routes/download.js @@ -0,0 +1,48 @@ +var express = require('express'); +var router = express.Router(); +var ntr = require("../neutral-functions.js"); +var fs = require("fs") +var path = require("path") + +router.get("/", function(req,res,next) { + + var check = ntr.checkToken(req, res) + + if(check.name != false) { + + + + if(req.headers.filerequest != null && check.permLevel >= 3) { + if(fs.existsSync(req.headers.filerequest)) { + + res.download(req.headers.filerequest, (error) => { + + if(error) { + + res.send({"result":"ERROR"}) + } + }) + + } else { + + res.send({"result":"ERROR"}) + } + + + } else { + + res.redirect("/") + } + + } else { + + res.render('login', {error: ""}); + } + + + + +}) + +module.exports = router; + diff --git a/users/0cee5da6-6812-49d8-97f5-2df5c1d78191.json b/users/0cee5da6-6812-49d8-97f5-2df5c1d78191.json index df029ad..a741a72 100644 --- a/users/0cee5da6-6812-49d8-97f5-2df5c1d78191.json +++ b/users/0cee5da6-6812-49d8-97f5-2df5c1d78191.json @@ -9,5 +9,5 @@ "livableToken": true, "createdAt": 1679260759114 }, - "lastconnexion": 1679592206404 + "lastconnexion": 1679594165151 } \ No newline at end of file