Skip to content
Snippets Groups Projects
Commit 9e0bbb40 authored by Damien's avatar Damien
Browse files

On peut transmettre le toucan en pdf et sa cover

parent e2b24b7d
Branches
No related tags found
No related merge requests found
.vscode
\ No newline at end of file
/node_modules /node_modules
.env.json
\ No newline at end of file
var express = require("express"); var express = require("express");
var fs = require("fs");
var path = require("path");
var upload = require("../utils/fileSaver");
var Toucan = require("../models/modelToucan"); var Toucan = require("../models/modelToucan");
var router = express.Router(); var router = express.Router();
...@@ -16,8 +19,21 @@ router.route("/toucans") ...@@ -16,8 +19,21 @@ router.route("/toucans")
}); });
}) })
// Une route pour créer un toucan // Une route pour créer un toucan
.post(function(req,res) { .post(upload.fields([{name:"toucan", maxCount:1 }, {name:"cover", maxCount:1 }]),function(req,res) {
var toucan = new Toucan(req.body); var toucan = new Toucan(req.body);
var id = (toucan._id).toString();
var index;
// On renome les fichier avec la clé de l'entrée dans la database
for (index in req.files) {
var file = req.files[index][0];
var extension = path.extname(file.path);
var newPath = file.destination+"/"+id+extension;
fs.rename(file.path,newPath, err => {
if (err) {
res.err(err);
}
});
}
toucan.save(function(err) { toucan.save(function(err) {
if (err) { if (err) {
res.send(err); res.send(err);
......
var multer = require("multer");
var env = require("../.env");
//Renvoie le nom de l'extension de file si son mime est autorisé, null sinon
var isAllowedMime = function(file) {
var mime = file.mimetype;
var ext = null;
env.savedExtensions.forEach(extension => {
var index = extension.knownMime.indexOf(mime);
if (index>=0) {
var theMime = extension.knownMime[index].split("/");
ext = theMime[theMime.length-1];
}
});
return ext;
};
// On ne sauvegarde que si on connait l'extension
var fileFilter = function(req,file,cb) {
var shouldPass= isAllowedMime(file);
cb(!shouldPass ? new Error("Extension inconnue"): null ,shouldPass);
};
// On envoie dans le dossier de destination en fonction de l'extension
var saveDestination = function(req,file,cb) {
var mime = file.mimetype;
var hasPassed = false;
env.savedExtensions.forEach(extension => {
if (extension.knownMime.includes(mime)) {
hasPassed = true;
cb(null,extension.path);
}
});
if (!hasPassed) {
cb(new Error("Impossible d'enregistrer le fichier"));
}
};
//Les toucans sont només par leur date de parution
var aFileNeedAName = function(req,file,cb) {
var extension = isAllowedMime(file);
cb(null,"defaultName."+extension);
};
var storage = multer.diskStorage({
destination: saveDestination,
filename: aFileNeedAName,
});
var upload = multer({storage: storage, fileFilter: fileFilter});
module.exports = upload;
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment