Я загружаю изображение, но когда я пытаюсь реализовать функцию, чтобы я мог изменить имя файла, включив в него дату после его сохранения.
Используя приведенный ниже код, я получу пустой объект, но сообщение все равно будет успешным.
Но если я раскомментирую код, он будет работать, но не будет содержать дату.
const express = require("express");
const multer = require("multer");
const app = express();
const fileFilter = function(req, file, cb){
const allowedTypes = ["image/jpeg","image/png", "image/gif"];
if(!allowedTypes.includes(file.mimetype)) {
const error = new Error("wrong file type");
error.code = "LIMIT_FILE_TYPES";
return cb(error, false);
}
cb(null, true);
}
const storage = multer.diskStorage({
destination:function(req, file, cb){
cb(null, './uploads/')
},
filename:function(req, file, cb){
cb(null, file + '-' + Date.now())
}
});
const MAX_SIZE = 200000
const upload = multer({
// dest: './uploads/', If I un-comment this line it will upload the image but will not change file name will still be random hash numbers
fileFilter,
storage:storage,
limits:{
fileSize: MAX_SIZE
}
});
app.post('/upload', upload.single('file'), (req, res) => {
res.json({file:req.file});
});
app.use(function(err, req, res, next) {
if(err.code === "LIMIT_FILE_TYPES") {
res.status(422).json({error:"Only Images are Allowed"});
return;
}
if (err.code ==="LIMIT_FILE_SIZE"){
res.status(422).json({error:`Size is to Large, Max size is ${MAX_SIZE/
1000}KB`});
return;
}
});
app.listen(3344, () => console.log("running local on 3344"));