Files
LAB5/2/app.js
MishaBagger 0956275ec4 MACHIN
2023-11-08 13:41:29 +03:00

67 lines
1.6 KiB
JavaScript

const express = require("express");
const multer = require("multer");
const ejs = require("ejs");
const path = require("path");
const storage = multer.diskStorage({
destination: "./public/uploads/",
filename: function(req, file, callback) {
callback(
null,
file.fieldname + "-" + Date.now() + path.extname(file.originalname)
);
}
});
const upload = multer({
storage,
limits: { fileSize: 1000000 },
fileFilter: function(req, file, cb) {
checkFileType(file, cb);
}
}).single("myImage");
function checkFileType(file, cb) {
const filetypes = /jpeg|jpg|png|svg/;
const extname = filetypes.test(path.extname(file.originalname).toLowerCase());
const mimetype = filetypes.test(file.mimetype);
if (mimetype && extname) {
return cb(null, true);
} else {
cb(new Error(`Только изображения формата - png, jpg, jpeg`));
}
}
const app = express();
const port = 3000 || process.env.PATH;
app.set("view engine", "ejs");
app.use(express.static("./public"));
app.get("/", (req, res) => {
res.render("index");
});
app.post("/upload", (req, res) => {
upload(req, res, err => {
if (err) {
res.render("index", { msg: err.message });
} else {
if (req.file == undefined) {
res.render("index", { msg: "Пожалуйста, выберите файл для загрузки" });
} else {
res.render("index", {
msg: "Файл обновлён!",
file: `uploads/${req.file.filename}`
});
}
}
});
});
app.listen(port, () => {
console.log(`Старт сайта ${port}`);
});