67 lines
1.6 KiB
JavaScript
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}`);
|
|
});
|