xxxxxxxxxx
const multerStorage = multer.memoryStorage();
exports.uploadUserPhoto = upload.single('photo');
exports.resizeUserPhoto = (req, res, next) => {
if (!req.file) {
return next();
}
req.file.filename = `user-${req.user.id}-${Date.now()}.jpeg`;
sharp(req.file.buffer)
.resize(500, 500)
.toFormat('jpeg')
.jpeg({
quality: 90,
})
.toFile(`public/img/users/${req.file.filename}`);
next();
};
express multer
xxxxxxxxxx
const multer = require('multer');
const express = require('express').Router();
/**create a folder called uploads*/
/**set up storage*/
const storage = multer.diskStorage({
destination: (req,file,callback) => {
callback(null, 'uploads/profileImage');
},
filename: (req,file,callback) => {
const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1e9);
callback(null, file.fieldname + '-' + 'image-' + uniqueSuffix);
},
});
const fileFilter = (req,file,callback) => {
const supportedFiles = ['image/jpeg', 'image/png'];
if (supportedFiles.includes(file.mimetype)) {
return callback(null, true);
} else {
//reject file
return callback('Unsupported file format', false);
}
};
const upload = multer({
storage: storage,
limits: { fileSize: 1000000 },
fileFilter: fileFilter,
});
router.post('/upload-image', upload.single('thumbnail'), (req, res, next)=>{
console.log(req.file);
/**do something*/
});
router.post('/upload-images', upload.array('thumbnail'), (req, res, next)=>{
console.log(req.files);
/**do something*/
});